在我看来,#define编译器指令看起来相当奇怪。我读过没有为它分配内存。
#include <iostream>
#define test 50
int main()
{
cout<<test;
return 0;
}上面的函数显示50,即使没有为编译器指令#define分配内存
编译器如何知道50存储在它(测试)中而没有任何内存。
发布于 2014-12-09 16:17:37
宏与变量不是一回事。
您的编译器将翻译程序。
#include <iostream>
#define test 50
int main()
{
cout << test;
return 0;
}至
#include <iostream>
int main()
{
cout << 50;
return 0;
}将名称test替换为在#define语句中给出的值。你可能想看看你可以在互联网上找到的一些教程,例如:
#定义getmax(a,b) ((a)>(b)?(a):(b)) 这将替换getmax后面的两个参数,替换表达式,但也将每个参数替换为其标识符,这与如果它是一个函数时所期望的完全相同: //函数宏#包括使用命名空间std;#定义getmax(a,b) (A)>(B)?(A):(B) int main() { int x=5,y;y= getmax(x,2);cout << y << endl;cout << getmax(7,x) << endl;返回0;}
发布于 2014-12-09 16:17:17
实际上,无论在编译之前在代码中遇到什么情况,test都将被50所取代。因为替换不是在运行时完成的,所以没有开销。
https://stackoverflow.com/questions/27383625
复制相似问题