В макросах C откуда взята функция named ()? - PullRequest
0 голосов
/ 30 марта 2020

В приведенном ниже коде я не понимаю функцию defined(), используемую внутри #if; где это определено?

Может кто-нибудь указать мне хороший ресурс на C языке, где я мог бы go глубже в такого рода вещах?

#include <stdio.h>
#define Macro 7

void initMSP(void){
    printf("OKay with MSP platform\n");
}

void initKine(void){
    printf("Done with Kine\n");
}

//#define KINETICS  
#define MSP

int main(){

    printf("Hello world program\n");
    printf("%d\n",Macro);
    #if defined(KINETICS) && !defined(MSP) 
            initKine();
    #elif defined(MSP) && !defined(KINETICS)  
        initMSP();
    #else 
        #error "Please define a Platform "
    #endif  
}

1 Ответ

2 голосов
/ 30 марта 2020

defined не является функцией. Это синтаксическая конструкция c препроцессора C, такая же как #define, #ifdef и так далее. Собственно язык C (в той степени, в которой вы можете отделить C от своего препроцессора) никогда напрямую не взаимодействует с defined. Он существует во время предварительной обработки, вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...