首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于#if条件编译,该怎么解决

2012-02-21 
关于#if条件编译直接帖代码啦,基础问题,一看就懂。=============================#includeiostreamusingn

关于#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 是定义的宏,所以成立。

热点排行