【发布时间】:2016-09-22 08:12:55
【问题描述】:
我正在使用 mingw 在 OSX for Windows 上编译 C++ 代码。 C++ 代码是自动生成的,包括 MS Visual Studio 特定的代码:
class __declspec(novtable) SomeClass
当我编译时,我收到很多警告:
warning: ‘novtable’ attribute directive ignored [-Wattributes]
我想禁止显示这些警告。 Mingw 不支持 -Wno-microsoft 选项,所以我想我可以让 __declspec(notable) 被视为指向空字符串的标识符并让预处理器将其删除。
即
#define __declspec(novtable)
但是,这被视为对 __declspec() 宏的重新定义,这不是所需的行为。
有没有办法让预处理器将__declspec(novtable) 视为标识符,或者以其他方式抑制此警告? (不能修改有问题的自动生成代码)。
【问题讨论】:
-
您想保留其他
__declspec并忽略novtable 吗? -
为什么不能修改生成的代码?在代码上运行
sed(或awk)会相当方便。 -
我很想修改代码,但它是自动生成的,需要保持不变,以便可以在多个平台上构建。其他人可能希望使用 VC 代码进行构建。
标签: c++ c-preprocessor