我遇到过#define
预处理器指令之前在学习C时,然后在我读过的一些代码中也遇到过它。但除了使用它来明确替换常量和定义宏之外,我还没有真正理解它在没有“主体”或标记字符串的情况下使用的特殊情况。
以这一行为例:
#define OCSTR(X)
就这样!这个或更好的用途是什么,什么时候使用#define
必要的?
这在两种情况下使用。第一个也是最常见的涉及
条件编译:
#ifndef XYZ
#define XYZ
// ...
#endif
您自己肯定已经将其用于包含守卫,但它也可以
用于诸如系统依赖项之类的事情:
#ifdef WIN32
// Windows specific code here...
#endif
(在这种情况下,WIN32 更有可能在命令行上定义,但它
也可以定义在"config.hpp"
文件。)这通常会
只涉及类似对象的宏(没有参数列表或
括号)。
第二个是条件编译的结果。某物
喜欢:
#ifdef DEBUG
#define TEST(X) text(X)
#else
#define TEST(X)
#endif
这允许编写如下内容:
TEST(X);
如果DEBUG
已定义,并且如果它不执行任何操作
不是。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)