我已在代码中启用-Wall
以消除所有警告。但是我希望在代码中允许一些,所以我在代码中禁用那些。在常见问题中,我可以很容易地在Google中找到警告编号并禁用它们,例如:
#pragma warning( disable : 4127 )
但有些人,我无法找到相应的号码。例如,我想禁用:
warning : array subscript is of type 'char' [-Wchar-subscripts]
我如何找到它的号码?有可搜索的列表吗? Microsoft documentation无法在关键字上进行搜索,只能在数字上搜索。
答案 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。