Microsoft 的 MIDL 编译器生成的 C/C++ 源代码文件有些无效,例如此摘录中的代码:
#ifndef CLSID_DEFINED
#define CLSID_DEFINED
typedef IID CLSID;
#endif // CLSID_DEFINED
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
#endif !_MIDL_USE_GUIDDEF_
Visual C++ 忽略之后的标记#endif
,但神圣标准在那里不需要任何东西,因此 g++ 会出错,甚至 gcc(编译为 C)也会产生警告:
H:\dev\tools\better keyboard\test> gcc com_server\com_server_i.c -c com_server\com_server_i.c:68:8:警告:#endif 指令末尾的额外标记 #endif !_MIDL_USE_GUIDDEF_ ^ H:\dev\tools\更好的键盘\测试>_
每次生成该代码时手动修复该代码会变得烦人且烦人。
假设 gcc 必须编译代码,是否有更好的方法来避免这个明显未命名的警告?
我已经大致查看了一个关于此的现有问题,但无济于事。