39

在 Microsoft 编译器上,可以使用 #pragma 禁用特定警告,而不禁用其他警告。如果编译器警告“必须完成”的事情,这是一个非常有用的功能。

此时的 GCC 是否有类似的功能?这似乎是一个足够明显的功能,无法想象它还没有这个功能,但网络上的旧信息表明这个功能不存在。

在 GCC 中使用什么?

具体来说,我喜欢使用多字符常量,例如“abc”。这些有效地评估为一个基数 256 数字 - 一个非常方便的功能,但它会触发警告。在 case 语句中切换四个字符串非常方便。

4

3 回答 3

25

从 GCC 手册:

许多选项都有以 -f 或 -W 开头的长名称——例如,-fforce-mem、-fstrength-reduce、-Wformat 等。其中大部分既有正面形式也有负面形式;-ffoo 的否定形式是 -fno-foo。本手册仅记录这两种形式中的一种,以非默认形式为准。

但是,如果您询问是否有源级警告禁用,我不知道 GCC 中是否存在该功能。

于 2009-07-03T16:14:42.827 回答
13

-Wno-multichar

如果使用了多字符常量 ('FOOF'),则不要发出警告。通常它们表示用户代码中的拼写错误,因为它们具有实现定义的值,不应在可移植代码中使用。

更多信息

于 2009-07-03T16:16:03.437 回答
13

在源代码中,编写:

#pragma GCC diagnostic ignored "-Wno-multichar"

// Code with warnings, but they won’t be displayed now...
于 2016-07-20T20:49:30.387 回答