C语言 不同源文件同一宏名可以定义不同宏体吗 20

在不同的源文件中,对同一宏名定义不同的宏体是合法的吗?可以再其他文件中调用此文件的宏吗?麻烦回复详细一些,谢谢各位了如我在A.c中定义了#definePI15;那么可以再... 在不同的源文件中,对同一宏名定义不同的宏体是合法的吗?
可以再其他文件中调用此文件的宏吗?
麻烦回复详细一些,谢谢各位了
如我在A.c中定义了#define PI 15 ;那么可以再其他文件中定义#define PI 20吗,或者调用PI=15
展开
 我来答
microroom
科技发烧友

2018-12-03 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1603万
展开全部
假设1.c和2.c都定义了一个宏PI(宏体可以相同或不同),则可分两种情况分析:
1、这两个文件各自独立,都不包含对方
则互不影响,也访问不到对方定义的PI。
2、一个包含另一个
这就像在同一个文件中定义一个宏两次,如果没取消前一次定义,则在编译时,一般是显示一个警告,有的编译器也可能显示为错误。

结论:
可以在同一源文件中多次将同一宏名定义成不同的宏体(源文件相互包含的效果与此等同),但新的定义如果没先用#undef 宏名(如#undef PI)取消前一次定义,则在编译时,可能会显示警告或错误,显示警告则会用新定义取代旧定义,此处以前使用的仍是旧宏体,此处以后使用新宏体。

如:
#define p 1
void p1()
{
//输出1
printf("%d",p);
}
#define p 2
void p2()
{
//输出2
printf("%d",p);
}
//显式取消定义
#undef p
#define p 3
void p3()
{
//输出3
printf("%d",p);
}
匿名用户
2018-12-03
展开全部
在不同的文件里定义相同的宏名是可以的,但如果同时引用这两个文件就会编译失败,因为同时引用这两个宏定义,编译器是不知道应该用哪一个的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友79503af
2018-12-03
知道答主
回答量:70
采纳率:33%
帮助的人:5.3万
展开全部
可以做一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式