Con*_*ler 20
您最有可能希望您的定义如下:
#define MONTHS 12 /* some code here... */ int payAnnual = payMonthly * MONTHS;
要回答您的问题,将不会使用任何内存.预处理器不知道诸如变量和存储器之类的概念.它本质上是一个自动文本编辑器.它将用符号MONTHS替换任何出现的符号.
由于预处理器是如此愚蠢,通常最好使用const变量.这为您提供了类型检查的好处,并且可以使编译器错误更容易阅读.只要你声明它是静态的,变量就会被优化掉.(如果你没有在C中声明一个静态的全局变量,默认情况下,它将被导出,因此编译器无法完全优化它.)
static const int MONTHS = 12;
小智 9
语法实际上是:
#define MONTHS 12
Run Code Online (Sandbox Code Playgroud)
否=允许签名.MONTHS的编译代码中没有分配内存,也没有数据类型.
预处理器只是对源代码进行符号更改.因此,代码的行为与您自己用12替换所有MONTHS的行为相同.因此,使用它不会对内存产生影响.
使用预编译器定义是提高代码抽象级别的一种很好的方法,而不会影响性能.
问候
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |