c - 这个什么时候执行?

标签 c c-preprocessor preprocessor-directive

我有一个 C 代码:

... 
void caller() {
    #define YES 1
    #define NO 0
}
...

这两个#define行是在调用/执行caller时执行,还是仅在编译时执行。

最佳答案

预处理器宏不会执行,它们只是代码的命名片段,如果您使用它们,它们将被预处理器替换为其内容。了解有关预处理器宏的更多信息 here .

因此,经过预处理后,您的代码将是:

void caller() {
}

假设您在#define之后使用了YES宏:

#define YES 1
#define NO 0

void caller() {
    printf("My answer is: %d", YES);
}

上面的代码经过预处理后如下:

void caller() {
    printf("My answer is: %d", 1);
}

关于c - 这个什么时候执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43862311/

相关文章:

计数排序算法在 C 中不起作用

c# - C#中#if DEBUG预处理器指令的用法是什么?我们什么时候必须使用这个?

c - gcc 的预处理器如何评估哈希值?

c++ - 如何将可变参数宏的所有参数连接成带引号的字符串?

c - 条件指令中使用的任何非宏变量的计算结果是否为 0 是否正确?

c++ - 根据项目定义不同的功能

c - 为什么#if 预处理器不起作用?

c - 在不同迭代中使用 fscanf/fgets 读取文件时随机崩溃

c++ - 'else'编程需要空 'safe'语句吗?

c - 排序二维数组c程序