头文件中#include的文件,如何在结尾处Uninclude,非常有挑战性。

yxandyx 2014-09-11 09:55:24
MyFile.h
-----------------------------------------
#include "A.h"
enum MyType
{
DO_TYPE = A_TYPE, //A_TYPE 是在A.h中定义的常量。
};

//结尾处#uninclude "A.h"
-----------------------------------------

由于使用了A.h 中的 A_TYPE常量,此MyFile.h头文件引用了A.h ,如何在结尾处取消对 A.h 的引用?
主要目的是让其他文件在引用此MyFile.h头文件时,不会包含A.h进去。
...全文
970 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wingfiring 2014-09-19
  • 打赏
  • 举报
回复
果然是思路广,我很喜欢。
乐乐呵呵小海 2014-09-19
  • 打赏
  • 举报
回复
引用 6 楼 SXJIAKE 的回复:
#ifndef _A_H_
#define _A_H_

#pragma once

// ...

#endif
这是常用方法,避免重复包含,,或者你用命名空间也能解决
赵4老师 2014-09-19
  • 打赏
  • 举报
回复
不是啥东西都可以吞下去后还能吐出来的!
勤奋的小游侠 2014-09-18
  • 打赏
  • 举报
回复
楼主连include也没有搞懂吧,宏展开后a.h就是myfile.h的一部分了。那里还有uninclude。
「已注销」 2014-09-18
  • 打赏
  • 举报
回复
#ifndef _A_H_
#define _A_H_

#pragma once

// ...

#endif
超级能量泡泡 2014-09-16
  • 打赏
  • 举报
回复
#include "A.h"
// #include "B.h"
#define A_TYPE TMP_TYPE
// #define B_TYPE TMP_TYPE
enum MyType
{
   DO_TYPE = TMP_TYPE
};

#undef TMP_TYPE
这个效果?
AncientLysine 2014-09-12
  • 打赏
  • 举报
回复
#include就是把文件里的内容在当前行展开,哪来取消一说,又不是import。用命名空间吧,这东西就是为了解决你的问题而生的
jiuchang 2014-09-12
  • 打赏
  • 举报
回复
可以直接把两个宏定义成相同的变量就可以了,不include文件
mujiok2003 2014-09-11
  • 打赏
  • 举报
回复
lz人才啊
brookmill 2014-09-11
  • 打赏
  • 举报
回复
我觉得这个不是挑战性的问题了,想uninclude是不可能的。 只能想其他的办法绕过去,比如把A_TYPE的定义移到B.h里面,然后让A.h和MyFile.h都包含B.h

65,187

社区成员

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

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