C++ 中的条件 宏定义 #ifdef,怎么用不起来?
我的问题是想实现这样的功能:
#ifdef XXX
Todo...
#endif
但是这个 XXX 在什么地方定义呢?
0、如果我直接定义的话,那么 Todo 程序段肯定会被执行。
1、我用了
#if (condition)
#define XXX
#endif
怎么不起作用呢?就算我的 condition 成立,发现在程序中也不会执行“#define XXX”。
请问,具体怎么实现这个功能?
[解决办法]
#开头的命令是预编译命令,它的所有功能都在编译程序前完成
#if这个预编译命令,它的判断条件必须能够在编译程序前经由简单的文本处理和数学运算就得到结果,当然里面不能有任何程序编译后运行时才赋值的变量等
要在程序运行中做判断,请使用if语句
[解决办法]
windows还是linux平台?
vc的话,可以在预编译器选项里,linux可以在makefile里,-G
[解决办法]
回楼主:
对于楼主这种写法!我见过他的使用!这种使用一般是这个头文件根据不同的条件对应不同的内容。例如你那个XXX可以是平台里自带的宏定义那么这种写法就可以实现对应不同平台的头文件包含方法。
对于楼主说XXX在哪里定义,这个真的不好回答!只有楼主提供了你的需求才好回答!
[解决办法]
#开头的指令都是预处理指令,和 C 语句是不一样的。
C 的编译阶段分 预处理->编译->链接。
预处理主要用处就是在源代码里做文字替换和筛选工作,为编译做准备。
#if...#endif 就是告诉预处理器如果 #if 后面的条件成立,那么就把 #if 和 #endif 这两行(不包括这两行里面的内容)删了交给编译器;如果不成立,那么把 #if...#endif 之间的所有内容删了交给编译器。
编译器看不到任何 #打头的命令,因为预处理器都给处理掉了,而且编译器即使看到了也只会报错,因为它不认识这些指令。
[解决办法]