c - 在 C 预处理器中为其自身定义一些内容

标签 c c-preprocessor self-reference

我遇到了这些行:

#define bool  bool
#define false false
#define true  true

我认为我不需要说更多的话,只是“wtf?”,但只是想清楚:给自己定义一些东西有什么意义?

这些行来自 clang stdbool.h

最佳答案

C 和 C++ 标准明确允许这样做(并要求不存在无限扩展)

顺便说一句,类似函数的递归(或 self-refential )宏更有用:

#define puts(X) (nblines++,puts(X))

(内部 puts 是对标准 puts 函数的调用;宏通过计算 nblines 来“重载”此类进一步的调用>)

您的定义可能有用,例如对于后来的构造,如 #ifdef true,它不能是一个简单的 #define true 因为这会“删除”所有进一步的使用true,因此它必须完全是#define true true

关于c - 在 C 预处理器中为其自身定义一些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60098097/

相关文章:

python - __init__ 类(不是实例 __init__)

python - 递归引用列表本身

entity-framework-4 - 具有多对多自引用关系的 EF Code First

c - FFT 实现及其输出的使用

转换 X509_STORE_load_locations() 调用以从内存加载数据

c - 如何判断 C 整型变量是否有符号?

OpenACC 的 C/预处理器标准宏?

java - Java to C实现中equalsIgnoreCase的建议

C内存共享问题

c++ - 使用 CPP 标志从一个源文件创建多个目标文件