[C语言] 关于预编译

[复制链接]
1116|3
 楼主| 夏冬 发表于 2015-7-23 20:34 | 显示全部楼层 |阅读模式
  1. typedef
  2. {
  3.     Enum0 = 0,
  4.     Enum1,
  5.     Enum2
  6. }Enum;

  7. #define Temp1     Enum0
  8. #define Temp2     Enum1
  9. #define TRUE       1
  10. #define FALSE      0


  11. int main ( )
  12. {
  13. ...
  14. #if (Temp2 == TRUE)
  15. ...
  16. #endif
  17. ...
  18. }


如上程序,显然#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

粉丝
快速回复 在线客服 返回列表 返回顶部