打印
[C语言]

关于预编译

[复制链接]
991|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
夏冬|  楼主 | 2015-7-23 20:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
typedef
{
    Enum0 = 0,
    Enum1,
    Enum2
}Enum;

#define Temp1     Enum0
#define Temp2     Enum1
#define TRUE       1
#define FALSE      0


int main ( )
{
...
#if (Temp2 == TRUE)
...
#endif
...
}


如上程序,显然#if...#endif包含的代码不会被编译,因为预编译在编译之前。话是这么说,Temp2已经被替换为Enum1,但是编译前编译器怎么知道Enum1已经定义了呢?

相关帖子

沙发
夏冬|  楼主 | 2015-7-24 07:52 | 只看该作者
自己顶一下

使用特权

评论回复
板凳
ayb_ice| | 2015-7-24 08:01 | 只看该作者
本帖最后由 ayb_ice 于 2015-7-24 08:06 编辑

用#define的可以,如果要用enum等定义的,可以这样
        if(Temp2 == TRUE){
                //......
        }

使用特权

评论回复
地板
夏冬|  楼主 | 2015-7-24 08:11 | 只看该作者
ayb_ice 发表于 2015-7-24 08:01
用#define的可以,如果要用enum等定义的,可以这样
        if(Temp2 == TRUE){
                //......

调试发现问题后我是这样改的,但不知道为什么那样不行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

76

帖子

2

粉丝