【发布时间】:2014-12-09 16:13:26
【问题描述】:
#define 编译器指令对我来说似乎很奇怪。我读到没有分配内存给它。
#include <iostream>
#define test 50
int main()
{
cout<<test;
return 0;
}
即使没有为编译器指令#define 分配内存,上述函数也会显示 50
编译器是如何知道 50 存储在其中(测试)而没有任何内存的。
【问题讨论】:
-
宏在编译时执行简单的文本替换。出现“test”的所有地方,编译器都会替换为“50”。所以程序的工作方式与您编写
cout<<50;完全相同 -
另外,因为这是 C++,所以你真的应该使用
const int test = 50;。我们在标准化 C++ 时努力工作以使#define几乎没有必要。