c++中何为宏定义?

 我来答
Adol1111
2013-08-09 · TA获得超过948个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:353万
展开全部

C/C++中的宏就是预处理命令,在编译开始之前进行替换相应的替换规则。

最常见的就是#define,其次就是预编译宏...比如:

#define S(x) ((x)*(x))

int main(){
 int a=S(5);
}

//编译时就会替换成 int a=((5)*(5))

宏在C里有独特的用处,但因为是简单替换经常会发生问题,所以在C++中不建议这样用。比如:

#define S(x) x*x
int a=S(5+1) //实际为 a=5+1*5+1,而不是a=6*6

其他方面,#define定义的常量,不能算作真正的常量,逃避了编译器的检查,也会发生一定的问题,所以在C++中很少使用宏。

在C++中,可以用内联函数(inline)代替,宏定义的伪函数。const定义的常量代替#define定义的常量。当然,有些地方宏依然有不可代替的作用,比如一些头文件中,仍是不得不使用的防护技术,比如

#pragma once

#ifndef XXX
#define XXX
#endif

这些防护技术都可以放置重复声明等问题...

yuantailing
2013-08-09 · TA获得超过2546个赞
知道小有建树答主
回答量:1167
采纳率:92%
帮助的人:766万
展开全部

宏是一种文本替换,在编译初期展开。直接举例说明

#define AAA BBB

这样所有出现标识符AAA的地方,都会被替换成标识符BBB

#define FFF(x) ((x)*(x))

这样替换规则是,比如FFF(9),则替换成((9)*(9))

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
姐姐很爷们
2013-08-09 · 超过21用户采纳过TA的回答
知道答主
回答量:93
采纳率:0%
帮助的人:64.6万
展开全部
通俗地讲:
就相当于别名,替换
比如:你可以用shuxue 代替 math
因为你一看到shuxue你就立刻知道是什么意思,看到math却不一定知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夕落阳尽bw
2013-08-09 · TA获得超过407个赞
知道小有建树答主
回答量:365
采纳率:50%
帮助的人:220万
展开全部
楼上说的对,就是起别名,方便程序员。在预处理的时候会把宏展开。然后进行编译
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cppqingyuan
2013-08-09 · 超过44用户采纳过TA的回答
知道答主
回答量:154
采纳率:0%
帮助的人:115万
展开全部
C++中不建议使用宏
可以用const和枚举替换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式