首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++中编译器指令的工作

C++中编译器指令的工作
EN

Stack Overflow用户
提问于 2014-12-09 16:13:26
回答 2查看 190关注 0票数 0

在我看来,#define编译器指令看起来相当奇怪。我读过没有为它分配内存

代码语言:javascript
运行
复制
#include <iostream>
#define test 50
int main()
{
    cout<<test;
   return 0;
}

上面的函数显示50,即使没有为编译器指令#define分配内存

编译器如何知道50存储在它(测试)中而没有任何内存。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-09 16:17:37

与变量不是一回事。

您的编译器将翻译程序。

代码语言:javascript
运行
复制
#include <iostream>
#define test 50
int main()
{
   cout << test;
   return 0;
}

代码语言:javascript
运行
复制
#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;}

票数 5
EN

Stack Overflow用户

发布于 2014-12-09 16:17:17

实际上,无论在编译之前在代码中遇到什么情况,test都将被50所取代。因为替换不是在运行时完成的,所以没有开销。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27383625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档