c++--define和const
1,属性:
define
是一个预处理器指令,const
是关键字。
2,作用
define用于宏定义,定义一段代码的替换文本;
const用于定义常量;
2,作用阶段:
define在预处理阶段被编译器处理,进行替换,const在编译阶段由编译器处理。
3, 作用域
预处理指令(如#define
)不受C++作用域规则的限制。这意味着一旦定义了一个宏,它将从定义点开始对整个文件有效,直到遇到相应的#undef
或者文件结束。const用于定义常量,变量是受c++语法限制作用域的。
#include <iostream>
void test_define(){
#define NUM 100
}
int main(){
std::cout<<"main="<<NUM<<std::endl;
return 0;
}
4,类型检查
由于#define
执行的是简单的文本替换,因此没有类型安全的概念。这可能导致一些不易察觉的错误。const
定义的常量具有明确的类型,因此编译器可以在编译期间进行类型检查。
5,使用上
define语句不需要分号,const需要分号。
6,内存上
宏定义的内容在预处理阶段被用于宏替换,不占据内存,const用于定义变量,变量占据内存。