如何找出C ++警告的数量

时间:2017-11-21 15:51:27

标签: c++ c++11 compiler-warnings suppress-warnings

我已在代码中启用-Wall以消除所有警告。但是我希望在代码中允许一些,所以我在代码中禁用那些。在常见问题中,我可以很容易地在Google中找到警告编号并禁用它们,例如:

#pragma warning( disable : 4127 )

但有些人,我无法找到相应的号码。例如,我想禁用:

warning : array subscript is of type 'char' [-Wchar-subscripts]

我如何找到它的号码?有可搜索的列表吗? Microsoft documentation无法在关键字上进行搜索,只能在数字上搜索。

1 个答案:

答案 0 :(得分:5)

您没有使用Microsoft编译器,或者至少不使用Microsoft编译器前端。警告由Clang前端打印。 (GCC有一个非常相似的警告,也称为-Wchar-subscripts,但该消息的措辞略有不同。)

Clang和GCC不使用数字作为警告,而是使用名称。您可以使用这些编译指示禁用诊断:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wchar-subscripts"

应该在没有警告的情况下编译的代码如下,通过这种方式,您可以恢复警告的先前状态(通常已启用):

#pragma GCC diagnostic pop

请注意它是“GCC”,因为该pragma实际上适用于GCC和Clang。