繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM