有问题的行是:
#if ! defined(_VALUE)
foo = 23;
#endif
它似乎可以构建,但我不确定它的行为是否符合预期。
最佳答案
如果定义了“_VALUE”,您的示例会告诉预处理器排除文本;否则包括它。
大多数编译器都会为您提供“显示预处理器输出”的选项,例如“-E”代表 gcc:
x.c
#if ! defined(MY_DEFINITION)
foo = 23;
#endif
示例输出:
$ gcc -E x.c
# 1 "x.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "x.c"
foo = 23;
$ gcc -E -DMY_DEFINITION x.c
# 1 "x.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "x.c"
这是一个很好的概述:C - Preprocessors
关于c - 我试图确定 C 是否可以在其预编译器中使用 '!',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74536908/