宏定义
来源:互联网 发布:扫码 销售 软件 编辑:程序博客网 时间:2024/06/12 12:57
数值宏常量
#define TIMEOUT 500
从本行宏定义开始,以后的代码就就都认识这个宏了;可以把任何东西定义成宏
在以后在定义一些宏常数的时候用 const代替,编译器会给 const 修饰的只读变量做类型校验,减少错误的可能。但一定要注意 const修饰的不是常量而是 readonly 的变量,const 修饰的只读变量不能用来作为定义数组的维数,也不能放在 case 关键字后面。
字符串宏
定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365
你有没有考虑在 16 位系统下把这样一个数赋给整型变量的时候可能会发生溢出? #define SEC_A_YEAR ( 60*60*24*365) UL
到底需不需要呢?
定义一个宏函数,求 x 的平方: #define SQR (x) x * x
x为10+1时会如何? #define SQR(x) ((x)*(x))
求两个数的和: #define SUM (x) (x) +(x)
x为3*5时会如何? #define SUM(x) ((x)+(x))
所以最外层的括号最好也别省了。我说过 define 是个演技高超的替身演员,但也经常耍大牌。 要搞定它其实很简单,别吝啬括号就行了。
宏函数被调用时是以实参代换形参。而不是“值传送”。 undef 是用来撤销宏定义
条件编译
#if 常量表达式程序段 1#else程序段 2#endif
它的功能是,如常量表达式的值为真(非 0),则对程序段 1 进行编译,否则对程序段 2 进行
编译。因此可以使程序在不同条件下,完成不同的功能。
至于#elif 命令意义与 else if 相同, 它形成一个 if else-if 阶梯状语句, 可进行多种编译选择
未完,待更
- 宏定义
- 宏定义
- 宏定义
- 宏定义
- 宏定义
- 宏定义
- 宏定义
- 宏定义
- 宏定义
- 宏定义
- 宏定义
- 宏定义
- 宏定义
- 宏定义
- 宏定义,#,##
- 宏定义
- 宏定义
- 宏定义
- Android N新特性
- Ubuntu16.04 Eclispe 安装 SVN 插件 subclipse 时 JavaHL 报错的解决办法
- matlab-线性代数 矩阵换列
- 设计模式-Java中自带的观察者模式(Observer)
- MinStack
- 宏定义
- swagger web api 学习总结 part2
- matlab-线性代数 将矩阵变成列、行向量(按照竖着存储)
- iOS开发系列--并行开发其实很容易
- 更换linux的启动模式
- 跟着SY速学Ubuntu系列七:Composer学习(3):超简单的实现ORM框架的依赖加载
- matlab-线性代数 将矩阵变成列、行向量(按照横着存储)
- 开源大数据处理引擎汇总(一)
- Python with语句及context manager