我有一个C代码:
...
void caller() {
#define YES 1
#define NO 0
}
...
当#define
被调用/执行时,两个caller
行是否会执行,或者它们是否仅在编译时执行。
答案 0 :(得分:3)
prerpcessor宏不执行,它们只是代码的片段,如果你使用它们,它们将被预处理器替换为它们的内容。阅读有关预处理器宏here的更多信息。
因此,在预处理之后,您的代码将是:
void caller() {
}
假设您在YES
之后使用#define
宏:
#define YES 1
#define NO 0
void caller() {
printf("My answer is: %d", YES);
}
预处理后,上面的代码如下:
void caller() {
printf("My answer is: %d", 1);
}