宏#define MAX 80等效于const int MAX = 80;两者都是常量且无法修改.
使用宏而不是常量整数不是更好吗?常量整数占用内存.预处理器将宏的名称替换为其值,对吧?所以它不会记忆.
为什么我会使用const int而不是宏?
Rei*_*ica 13
原因#1:范围界定.宏完全忽略了范围.
namespace SomeNS {
enum Functor {
MIN = 0
, AVG = 1
, MAX = 2
};
}
Run Code Online (Sandbox Code Playgroud)
如果上面的代码恰好包含在MAX宏定义之后的文件中,它将很乐意进行预处理80 = 2,并且编译失败.
另外,const变量是类型安全的,可以使用常量表达式安全地初始化(不需要括号)等.
另请注意,当编译器const在使用变量时可以访问变量的定义时,允许"内联"其值.所以如果你从不拿它的地址,它甚至不需要占用空间.
| 归档时间: |
|
| 查看次数: |
1207 次 |
| 最近记录: |