如何找出 C++ 警告的编号

How to find out the number of a C++ warning

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

#pragma warning( disable : 4127 )

但是有一些,我可能找不到对应的号码。例如,我想禁用 a:

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

如何找到它的编号?有可搜索的列表吗? Microsoft documentation 无法通过关键字搜索,只能通过数字搜索。

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

Clang 和 GCC 不使用数字表示警告,而是使用名称。您可以使用这些 pragmata 来禁用诊断:

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

下面是应该在没有警告的情况下编译的代码,有了这个,您可以恢复以前的警告状态(通常已启用):

#pragma GCC diagnostic pop

请注意,它说“GCC”,因为编译指示实际上适用于 GCC 和 Clang。