与此MSVC预处理器代码最接近的GCC是什么?
#pragma warning( push ) // Save the current warning state.
#pragma warning( disable : 4723 ) // C4723: potential divide by 0
// Code which would generate warning 4723.
#pragma warning( pop ) // Restore warnings to previous state.
Run Code Online (Sandbox Code Playgroud)
我们在常用的标题中包含代码,我们不希望生成特定的警告.但是,我们希望包含这些标头的文件继续生成该警告(如果项目启用了该警告).
在将大量C++代码从Visual Studio(2008)移植到Xcode(4.4+)时,我会遇到如下行:
UNUSED_ALWAYS(someVar);
Run Code Online (Sandbox Code Playgroud)
在UNUSED_ALWAYS(x)(通过UNUSED(x))宏扩展到x这似乎沉默的Visual C++就好了.但这对Clang来说还不够.
对于Clang,我通常使用该#pragma unused x指令.
在UNUSED_ALWAYS和UNUSED宏在人工定义windows.h这是我控制包含了一些工具来帮助的Xcode编译的Windows的东西头.
有没有办法定义UNUSED(x)扩展到#pragma unused x?我试过这个,Clang没有接受:
#define UNUSED(x) #pragma unused(x)
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
#define UNUSED(x) (void)(x)
Run Code Online (Sandbox Code Playgroud)
这似乎有效.我错过了什么吗?