我正在使用gcc,-Wall -Wextra -Wpedantic
开关和非扩展标准集(例如-std=c++14
)来编译代码。但是-我想要一个例外并使用__int128
,这会给我一个警告:
warning: ISO C++ does not support ‘__int128’ for ‘hge’ [-Wpedantic]
我可以禁止显示关于__int128
的特定警告吗?另外,我可以在使用这种类型之前和之后暂时禁止使用-Wpedantic
吗?
答案 0 :(得分:5)
如果我们咨询documentation for -Wpedantic
,我们会注意以下几点:
在
__extension__
后面的表达式中也禁用了pedantic警告。
快速bit of experimentation表明,即使在标志下,它也可以按预期定义变量:
__extension__ __int128 hge{};
但是,如果我们打算经常使用这种类型,那当然很麻烦。使用别名来减轻这种麻烦的方法。虽然我们在这里需要小心,但是 __extension__
属性必须在 entire 声明之前:
__extension__ typedef __int128 int128;
您可以看到它在here下工作。
另一种方法(遵循您的原始思路)是在类型别名周围使用诊断实用程序:
namespace my_gcc_ints {
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
using int128 = __int128;
#pragma GCC diagnostic pop
}