关于#if条件编译
直接帖代码啦,基础问题,一看就懂。
=============================
#include <iostream>
using namespace std;
const int UP = 1;
int main()
{
#if (UP)
cout < < "Y " < < endl;
#else
cout < < "N " < < endl;
#endif
system( "pause ");
return 0;
}
但是这个程序输出的始终是N,如果我使用#define UP 1语句
或者直接将括号里的UP替换成1,就会输出Y,为什么用const语句不行呢?????还望各位高手指教。
PS:我使用的是DEV C++ 4.9.9.2
[解决办法]
#if语句要判断是宏的值,宏的值只有通过#define或者在命令行-DXXX的形式定义。
用const int UP = 1;形式定义了一个整型常量,而不是一个宏。
对于宏的替换,是在预编译阶段就进行的,会把所有的宏替换为实际的值。而对const int UP的解析,却是在编译阶段。
在预编译阶段,只认#define定义的宏,不会理会const int 定义出来的常量,所以#if永远为假。
[解决办法]
#if寻找UP宏,你用const只是定义常量,并没有UP这个宏,而#define 是定义的宏,所以成立。