禁用GCC关于“下划线前缀用户定义字面量”的警告

4
我的客户有很多使用"ui64"、"ui32"等后缀的代码,我需要将其移植。
为了避免进行几个正则表达式查找和替换可能需要很长时间的夜晚,我已经将上述后缀复制为用户自定义字面量。
我正在寻找“-Wno-xxx”标志,以避免出现未带下划线的警告。
我在这里搜索了警告列表(链接),但由于目前我的大脑遭受相当严重的字母汤综合症,所以可能错过了。
我正在使用随cygwin捆绑的g++ 4.8.2。

警告默认启用,并明确告诉您不使用下划线前缀的文字操作符后缀存在问题:warning: literal operator suffixes not preceded by '_' are reserved for future standardization [enabled by default] - Rapptz
1
在这种情况下,遵从性需要暂时放在一边,直到更严重的问题得到解决。让这个警告信息混杂在已经很长的问题列表中并不是很有帮助。 - defube
1
为什么你不能在你的用户定义字面值后面加一个下划线呢?现在,你的程序是不合法的。 - Rapptz
如果直接无法轻松完成,请考虑将 grep -v "literal operator suffixes" 或类似的内容应用于编译器输出,以摆脱它。 - Daniel Frey
1个回答

2
我相信你正在寻找-Wno-literal-suffix选项。
自从gcc-7以来(在godbold上可以看到),此选项还会关闭没有前导下划线的用户定义字面量操作符的警告

-Wliteral-suffix(仅限C++和Objective-C++)

...

此外,当声明具有不以下划线开头的字面量后缀标识符的用户定义字面量操作符时发出警告。 未以下划线开头的字面量后缀标识符保留用于将来的标准化。


您可以使用--help=warnings选项让GCC列出所有可用的警告选项。

警告仍然出现在我的电脑上。它默认是启用的。请参见这里 - Rapptz
奇怪。它默默地吞噬了选项,却没有在列表中显示出来。尽管如此,它仍然无法正常工作。 - defube
文档在这里:http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html#C_002b_002b-Dialect-Options。文档还提供了更多关于警告存在原因的细节:“作为符合性扩展,GCC将这些后缀视为单独的预处理标记,以便与使用<inttypes.h>格式化宏的代码保持向后兼容性”,因此您可能需要实际上不要忽略这些警告。 - Michael Burr
方便的是,在代码库中没有出现inttypes.h。另外,我想他们需要单独处理这些内容以方便实现该特性。因为将后缀与其值合并可能会使解析这些运算符变得相当复杂。 - defube

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接