我正在使用mingw編譯OSX for Windows上的C++代碼。 C++代碼的自動生成,包括微軟的Visual Studio的特定代碼:C預處理器如何將函數宏視爲字符串
class __declspec(novtable) SomeClass
當我編譯,我得到很多的警告:
warning: ‘novtable’ attribute directive ignored [-Wattributes]
我想取消這些警告。 Mingw不支持-Wno-microsoft
選項,所以我認爲我可能會將__declspec(notable)
視爲指向空字符串的標識符,並讓預處理器將其刪除。
即
#define __declspec(novtable)
然而,這被視爲__declspec()
宏的重新定義,這是不期望的行爲。
有沒有辦法讓預處理器將__declspec(novtable)
當作標識符,否則會禁止此警告? (有問題的自動生成的代碼不能修改)。
你想要公關嗎?保留其他'__declspec'並忽略novtable? – Rup
爲什麼你不能修改生成的代碼?在代碼上運行'sed'(或'awk')會相當方便。 – molbdnilo
我很想修改代碼,但它是自動生成的,需要保持不變,以便它可以構建在多個平臺上。其他人可能希望用VC代碼來構建。 – John