关于define宏的跨文件使用问题。。。

xychzh 2010-02-11 10:43:28
假如我在 aaa.h 文件里定义了一个宏A

然后有一个bbb.h文件要使用这个宏A,那应该把这个#include "aaa.h"写在 bbb.h里还是bbb.cpp里??
按常理应该是放在头文件吧?? 否则这个头文件怎么知道是在哪?又没有声明。
因为我看到有人都写在cpp里。


这其中的问题能讲一下么??
...全文
11078 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xychzh 2010-02-11
  • 打赏
  • 举报
回复
引用 14 楼 lihualoveyou 的回复:
引用 5 楼 xychzh 的回复:引用 3 楼 lihualoveyou 的回复: 关健看你想在哪里用这个宏了,如果想在.h里用的话,需要在.h里引用"aaa.h"。如果仅是在cpp文件里引用的话,写在头文件和源码文件都一样。一个原则,写在用这个宏之前 我说了,是在aaa.h文件里使用
那就放在aaa.h里喽


#12楼:
“只要定义宏的头文件放在引用宏的头文件前面就可以”


应该是在引用宏的头文件的cpp文件中,在包含其.h头文件之前吧。
就是,假如aaa.h里引用了宏,那一定要在cpp中包含aaa.h之前 包含这个宏的头文件。

应该是这样吧。
KimenWu 2010-02-11
  • 打赏
  • 举报
回复
引用 5 楼 xychzh 的回复:
引用 3 楼 lihualoveyou 的回复:
关健看你想在哪里用这个宏了,如果想在.h里用的话,需要在.h里引用"aaa.h"。如果仅是在cpp文件里引用的话,写在头文件和源码文件都一样。
一个原则,写在用这个宏之前

我说了,是在aaa.h文件里使用

那就放在aaa.h里喽
jiuchang 2010-02-11
  • 打赏
  • 举报
回复
引用 11 楼 xychzh 的回复:
在aaa.h里,没有看任何头文件的包含,就引用了在其他头文件定义的宏。
别人就是这么写的。但是我编译却失败。
这个符合你这个“定义宏的头文件放在引用宏的头文件前面就可以”吧。


不是在aaa.h里定义的宏吗,怎么变成引用了
另外这个是与加载头文件顺利有关的,比如aaa.h引用了c.h文件中的宏,那在cpp文件中先包含c.h再包含aaa.h应该是可以的
xychzh 2010-02-11
  • 打赏
  • 举报
回复
“只要定义宏的头文件放在引用宏的头文件前面就可以”


应该是在引用宏的头文件的cpp文件中,在包含其.h头文件之前吧。
就是,假如aaa.h里引用了宏,那一定要在cpp中包含aaa.h之前 包含这个宏的头文件。

应该是这样吧。
xychzh 2010-02-11
  • 打赏
  • 举报
回复
引用 9 楼 jiuchang 的回复:
只要定义宏的头文件放在引用宏的头文件前面就可以,头文件是按顺序加载的


在aaa.h里,没有看任何头文件的包含,就引用了在其他头文件定义的宏。
别人就是这么写的。但是我编译却失败。
这个符合你这个“定义宏的头文件放在引用宏的头文件前面就可以”吧。
dskit 2010-02-11
  • 打赏
  • 举报
回复
#include<aaa.h> 出现在对宏A的引用之前
6楼
jiuchang 2010-02-11
  • 打赏
  • 举报
回复 1
只要定义宏的头文件放在引用宏的头文件前面就可以,头文件是按顺序加载的
xychzh 2010-02-11
  • 打赏
  • 举报
回复
引用 6 楼 icansaymyabc 的回复:
不管写在 .H 里还是写在 .CPP 里都行,只是必须要保证 #include<aaa.h> 出现在对宏A的引用之前。



但是别人在头文件里引用这些宏,而该头文件什么都不包含,都是放在cpp里,这又怎么解释??
xychzh 2010-02-11
  • 打赏
  • 举报
回复
引用 4 楼 supermegaboy 的回复:
应该放在bbb.h里


但是别人在头文件里使用这些宏,而该头文件什么都不包含,都是放在cpp里,这又怎么解释??
icansaymyabc 2010-02-11
  • 打赏
  • 举报
回复
不管写在 .H 里还是写在 .CPP 里都行,只是必须要保证 #include<aaa.h> 出现在对宏A的引用之前
xychzh 2010-02-11
  • 打赏
  • 举报
回复
引用 3 楼 lihualoveyou 的回复:
关健看你想在哪里用这个宏了,如果想在.h里用的话,需要在.h里引用"aaa.h"。如果仅是在cpp文件里引用的话,写在头文件和源码文件都一样。
一个原则,写在用这个宏之前


我说了,是在aaa.h文件里使用
飞天御剑流 2010-02-11
  • 打赏
  • 举报
回复
应该放在bbb.h里
KimenWu 2010-02-11
  • 打赏
  • 举报
回复
关健看你想在哪里用这个宏了,如果想在.h里用的话,需要在.h里引用"aaa.h"。如果仅是在cpp文件里引用的话,写在头文件和源码文件都一样。
一个原则,写在用这个宏之前
xychzh 2010-02-11
  • 打赏
  • 举报
回复
引用 1 楼 jiuchang 的回复:
写头文件还是源文件里没有多少差别,只要在使用这个宏之前引用定义它的头文件即可,让编译器能找到


没说清楚
jiuchang 2010-02-11
  • 打赏
  • 举报
回复
写头文件还是源文件里没有多少差别,只要在使用这个宏之前引用定义它的头文件即可,让编译器能找到
jiuchang 2010-02-11
  • 打赏
  • 举报
回复
理解正确
include等同于把那个文件的代码嵌入到cpp文件中,有先后顺序
你可以想着就是把这些头文件的内容都放到include它们的地方,这样应该好理解些

65,183

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧