我正在用gcc编译我的代码,用的是-Wall -Wextra -Wpedantic交换机和一个非扩展的标准集(比如它是-std=c++14)。但是-我想对这个规则做一个例外,并使用__int128。这给我一个警告:
warning: ISO C++ does not support ‘__int128’ for ‘hge’ [-Wpedantic]我可以抑制有关__int128的特定警告吗?或者,在使用此类型之前和之后,我是否可以暂时禁用-Wpedantic?
发布于 2019-02-12 11:41:34
如果我们咨询-Wpedantic,我们可以注意到以下几点:
在
__extension__后面的表达式中也禁用了迂腐的警告。
快速小试显示,即使在标志下,也可以按预期定义变量:
__extension__ __int128 hge{};当然,如果我们打算经常使用这种类型,这是相当麻烦的。要使这个问题不那么棘手,方法是使用类型别名。虽然我们在这里需要小心,但是属性必须在完整的声明之前
__extension__ typedef __int128 int128;你可以看到它在工作,这里。
另一种方法是围绕类型别名使用诊断语用,这种方法遵循您最初的思路:
namespace my_gcc_ints {
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
using int128 = __int128;
#pragma GCC diagnostic pop
}也是效果相当好。
https://stackoverflow.com/questions/54649040
复制相似问题