1.是否被定义
#if defined(symbol)
#ifdef symbol
#if !defined(symbol)
#ifndef symbol
上面没对语句都是等价的,但是 #if 形式功能更强大。因为常量表达式可能包含额外的条件,如下面所示
#if X > 0 || defined(ABC) && defined(DEF)
2.嵌套指令
预编译处理指令还可以嵌套,如下面代码所示:
#if defined(OS_UNIX)
#ifdef OPTION1
unix_version_of_option1();
#endif
#ifdef OPTION2
unix_version_of_option2();
#endif
#elif defined(OS_WINDOWS)
#ifdef OPTION2
unix_version_of_option2();
#endif /* OPTION2 */
#endif
有些编译器允许类似“/* OPTION */”的符号出现在 #endif 中,它的作用和注释差不多。不过这个符号对实际代码不会产生任何作用,去掉也没事。但最好的做法还是写上。
本文介绍了C语言预处理器中的#ifdef和#ifndef指令,用于检查宏是否被定义,并探讨了预处理指令的嵌套使用。通过示例代码展示如何在预处理器中实现条件编译,同时提到了#ifdef与#endif间的可选注释符号"OPTION"的使用。
和嵌套指令&spm=1001.2101.3001.5002&articleId=89036378&d=1&t=3&u=07daaf53c080469dbed17bc0d1dbe09c)
2852

被折叠的 条评论
为什么被折叠?



