afa*_*lek 40 c++ const c-preprocessor
可能重复:
为什么有人会使用#define来定义常量?
c ++ C++中的宏和const之间的区别
- 枚举与const对#define
使用#define和const创建常量有什么区别?有没有比其他的性能优势?当然我更喜欢使用它,const但我会考虑#define它是否具有合适的优势.
Ker*_* SB 77
该#define指令是一个预处理器指令; 预编译器在编译器甚至看到之前用它们的主体替换这些宏.可以将其视为自动搜索和替换源代码.
一个const变量声明声明了一个语言中的实际变量,你可以使用......好吧,就像一个真正的变量:取其地址,传递它,使用它,转换它,等等.
哦,性能:也许您认为避免变量的声明可以节省时间和空间,但是任何合理的编译器优化级别都没有区别,因为常量值已经在编译时被替换和折叠.但是你获得了类型检查的巨大优势,并使调试器知道你的代码,因此没有理由不使用const变量.
#define创建一个由宏预处理器替换的实体,它与常量完全不同,因为根据您定义的内容,它将被视为常量还是不被视为常量.#define的内容可以是任意复杂的,经典的例子是这样的:
#define SQR(x) (x)*(x)
Run Code Online (Sandbox Code Playgroud)
然后如果使用:
SQR(2+3*4)
Run Code Online (Sandbox Code Playgroud)
这将变成:
(2+3*4)*(2+3*4)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76542 次 |
| 最近记录: |