#if
2015-12-28 14:19
232 查看
#if
当注释掉大块代码时,使用”#if 0”比使用”//”要好,因为用”//”做大段的注释要防止被注释掉的代码中有嵌套的”/**/”,这会导致注释掉的代码区域不是你想要的范围, 当被注释掉的代码很大时容易出现这种情况,特别是过一段时间后又修改该处代码时更是如此。在这里顺便对条件编译(#ifdef, #else, #endif, #if等)进行说明。以下分3种情况:
1. 情况1:
#ifdef _XXXX
…程序段1…
#else
…程序段2…
#endif
这表明如果标识符_XXXX已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。
例:
#define NUM
………….
………….
………….
#ifdef NUM
printf(“之前NUM有过定义啦!:) \n”);
#else
printf(“之前NUM没有过定义!:( \n”);
#endif
}
如果程序开头有#define NUM这行,即NUM有定义,碰到下面#ifdef NUM的时候,当然执行第一个printf。否则第二个printf将被执行。
我认为,用这种,可以很方便的开启/关闭整个程序的某项特定功能。
2:情况2:
#ifndef _XXXX
…程序段1…
#else
…程序段2…
#endif
这里使用了#ifndef,表示的是if not def。当然是和#ifdef相反的状况(如果没有定义了标识符_XXXX,那么执行程序段1,否则执行程序段2)。例子就不举了。
3:情况3:
#if 常量
…程序段1…
#else
…程序段2…
#endif
这里表示,如果常量为真(非0,随便什么数字,只要不是0),
就执行程序段1,否则执行程序段2。
如果有#if需要顶格写
相关文章推荐
- Ajax直接调用WebService
- Redis 未授权访问配合 SSH key 文件利用分析
- Android 开发中RGB颜色对照表
- 自我介绍
- ecshop Admin后台商品列表处(上架、下架、精品...取消精品)增加操作
- system.err.println和system.out.println的区别
- JAVA集合框架之List接口实现类
- Bootstrap导航栏各元素操作方法(表单、按钮、文本)
- 设计模式第十二课 简单工厂设计模式
- (java后台)用户权限的多级菜单遍历方法
- MSSQL迁移到MYSQL
- 学习笔记2: Activity的启动模式
- iOS9之后实现两个app跳转
- easyui数据选择后重新定位到第一行
- weblogic开启开发者模式
- Spring中Quartz的配置
- Android SDK开发包国内下载地址
- 调用系统电话
- 设计模式之单例模式
- AFNetWorking 关于manager.requestSerializer.timeoutInterval 不起作用的问题