c - 我试图确定 C 是否可以在其预编译器中使用 '!'

标签 c c-preprocessor

有问题的行是:

#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/

相关文章:

c - C 中的内部静态变量,你会使用它们吗?

C++:可以在多个文件中调用静态变量吗?

c - 是否需要互斥锁来同步 pthread 之间的简单标志?

objective-c - iPhone项目常数

c - C语言中如何通过字符串打开文件

c++ - 找出可变参数宏中 __VA_ARGS__ 的类型

c++ - 测试指针的有效性 (C/C++)

c - 直接给 C 指针赋值

c++ - MSVS C++,如何编译扩展名为 *.i 的已预处理文件?

c - 在 C 中使用宏作为函数