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_
後のトークン#endif
は Visual C++ によって無視されますが、Holy Standard では何も要求されないため、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\better keyboard\test>_
コードが生成されるたびに手動で修正するのは面倒で面倒です。
gcc がコードをコンパイルする必要があると仮定して、この明らかに名前のない警告を回避するためのより良い方法はありますか?
this に関する既存の質問を大まかに見ましたが、役に立ちませんでした。