【发布时间】:2014-12-12 22:55:34
【问题描述】:
我知道有很多关于宏重新定义问题的帖子,但我仍然无法理解重新排序如何解决问题。
当我的项目在VC++ Directories->Include Directories 中按此顺序包含时,如here 中所示
并在C/C++ -> General -> Additional Include Directories 中显示here
我收到macro redefinition 警告:
1>c:***************************************\directx\dxgitype.h(12): warning C4005: 'DXGI_STATUS_OCCLUDED' : macro redefinition (############.cpp)
1> C:\Program Files (x86)\Windows Kits\8.0\Include\shared\winerror.h(49449) : see previous definition of 'DXGI_STATUS_OCCLUDED'
但是,当我从 Additional Include Directories 中删除 $(SolutionDir)\common\ExternalLibs\directx 并将其移动到 VC++ Directories->Include Directories 时,警告就会消失。
我检查了winerror.h 和dxgitype.h,但没有看到#undef DXGI_STATUS_OCCLUDED。那么,重新排序如何修复警告?至少一个标头应该有#undef,以便允许在其他标头中定义它,对吧?另外,Additional Include Directories 是在 Include Directories 之后加载的还是什么?
【问题讨论】:
-
不要包含指向包含您的问题的相关信息的图像的链接,如果它最终变成死链接(这很常见),它对其他社区成员毫无用处。 编辑您的帖子并将其包含在其中。
-
@CaptainObvlious,首先我不能在这里发布图片。当我尝试系统时说我需要超过 10 的声望才能发布图片!其次,链接没有死!那么,你为什么投了反对票??
-
然后复制并粘贴包含目录配置字段的内容,并说明它们是什么以及它们来自哪些字段。 FWIW 您提供的图像不完整,并且未显示在 Visual Studio 中配置的所有包含目录。
标签: c++ compiler-warnings include-guards