[英]How do I suppress the "ISO C++ does not support ‘__int128’ warning?
我正在使用gcc以及-Wall -Wextra -Wpedantic
开关和非扩展标准集(例如-std=c++14
)来-std=c++14
。 但是-我想要一个异常并使用__int128
,这给我一个警告:
warning: ISO C++ does not support ‘__int128’ for ‘hge’ [-Wpedantic]
我可以禁止显示有关__int128
的特定警告吗? 或者,我可以在使用这种类型之前和之后暂时取消-Wpedantic
吗?
如果我们查阅-Wpedantic
的文档, -Wpedantic
可以注意以下几点:
在
__extension__
的表达式中也禁用了__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
}
效果也不错 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.