我正在为多个平台(Windows、Linux、MacOSX)开发应用程序,我想确保我的代码符合ISOC++标准。在Linux和Mac上,它是通过-pedantic-errors标志实现的,在Windows上是通过/Za标志(禁用语言扩展)实现的。问题是,某些Windowsheader不符合C++(并且以一种愚蠢的方式,没有什么大不了的-大多数错误是'$':unexpectedinmacrodefinition,'__forceinline'notpermittedon数据声明和类似的废话)。您认为可以修复header吗?有人试过吗? 最佳答案
我正在尝试以平台不可知的方式对DWORD进行类型定义,但我遇到了以下编译器错误:...\mingw.org\mingw_gcc_4.5.0\bin\../lib/gcc/mingw32/4.5.0/../../../../include/windef.h:229:23:error:'DWORD'hasapreviousdeclarationas'typedeflongunsignedintDWORD'我希望能够依赖于我对DWORD的实现,而不是依赖于知道它是什么的底层编译器(使用typedef,而不是宏)。为什么mingw(gcc4.5.0)在编译应用程序时会自动包含“windef.h
这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Isthereacleanwaytopreventwindows.hfromcreatinganear&farmacro?Windef.h中这两个定义有什么意义?#definefar/*nothing*/#definenear/*nothing*/我知道它与nearandfar有关指针和它们不再使用的事实,但是#undef它们是否安全,所以我可以使用near和far作为我的代码中的函数和变量名称?或者,我是否应该简单地避免它并且从不使用near和far作为标识符?