如何找出 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。
我已在我的代码中启用 -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。