如何取消显示“ ISO C ++不支持'__int128'警告?

时间:2019-02-12 11:23:54

标签: c++ gcc compiler-warnings int128

我正在使用gcc,-Wall -Wextra -Wpedantic开关和非扩展标准集(例如-std=c++14)来编译代码。但是-我想要一个例外并使用__int128,这会给我一个警告:

warning: ISO C++ does not support ‘__int128’ for ‘hge’ [-Wpedantic]

我可以禁止显示关于__int128的特定警告吗?另外,我可以在使用这种类型之前和之后暂时禁止使用-Wpedantic吗?

1 个答案:

答案 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
}

works rather well