我正在用 gcc、-Wall -Wextra -Wpedantic
开关和非扩展标准集(比如说它-std=c++14
)编译我的代码。但是-我想对该规则做一个例外并使用__int128
. 这给了我一个警告:
warning: ISO C++ does not support ‘__int128’ for ‘hge’ [-Wpedantic]
我可以压制关于的具体警告__int128
吗?或者,我可以-Wpedantic
在使用这种类型之前和之后临时抑制吗?
我正在用 gcc、-Wall -Wextra -Wpedantic
开关和非扩展标准集(比如说它-std=c++14
)编译我的代码。但是-我想对该规则做一个例外并使用__int128
. 这给了我一个警告:
warning: ISO C++ does not support ‘__int128’ for ‘hge’ [-Wpedantic]
我可以压制关于的具体警告__int128
吗?或者,我可以-Wpedantic
在使用这种类型之前和之后临时抑制吗?
如果我们查阅文档,-Wpedantic
我们可以注意到以下内容:
在后面的表达式中也禁用了迂腐警告
__extension__
。
快速的实验表明,这允许人们按预期定义变量,即使在标志下:
__extension__ __int128 hge{};
但是,如果我们打算经常使用这种类型,那当然是相当麻烦的。使这不那么棘手的方法是使用类型别名。虽然我们在这里需要小心,但__extension__
属性必须在整个声明之前:
__extension__ typedef __int128 int128;
你可以看到它在这里工作。
另一种方法,一种遵循您最初的思路的方法,是在类型别名周围使用诊断编译指示:
namespace my_gcc_ints {
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
using int128 = __int128;
#pragma GCC diagnostic pop
}
这也很好用。