c - C中 "ifndef"和 "if !defined"的区别?

标签 c include-guards

我在同一个 C 源文件中看到了 #ifndef ABC#if !defined (ABC)

它们之间有细微的区别吗? (如果是风格问题,为什么有人会在同一个文件中使用它们)

最佳答案

不,以这种方式使用时,两者之间没有区别。当初始 #if 或后续 #elif 条件之一需要更复杂的测试时,后一种形式(使用 defined())很有用. #ifdef 仍然有效,但在这种情况下使用 #if defined() 可能会更清楚。例如,如果它需要测试是否定义了多个宏,或者它是否等于一个特定值。

差异(在文件中同时使用)可能取决于使用中的特定细微差别,如上所述,或者只是不一致的不良做法。

关于c - C中 "ifndef"和 "if !defined"的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8617712/

相关文章:

c++ - 使用 libcurl : it does not appear to get the entire page 时出现问题

c - _headerfile_h 这个名字是什么意思

c++ - 是否需要冗余包含 guard ?

使用 C 和指向指针的指针创建动态字符数组

objective-c - OSX 串行读取卡住/挂起

c - 按位运算的输出说明

c++ - 类未使用 header 保护器命名类型

c++ - 如何将具有自动返回类型的函数从头文件包含到多个 cpp 文件中

c++ - 多个类中使用的函数

c - 为结构分配内存,有两种不同的方式吗?