Yel*_*low 2 c++ compiler-warnings suppress-warnings c++11
我已开启-Wall代码以摆脱所有警告。但是有些我想在代码中允许,所以我在代码中禁用了那些。在常见的警告中,我可以轻松地在Google中找到警告编号并将其禁用,例如:
#pragma warning( disable : 4127 )
Run Code Online (Sandbox Code Playgroud)
但是在某些情况下,我找不到对应的号码。例如,我要禁用:
warning : array subscript is of type 'char' [-Wchar-subscripts]
我如何找到它的号码?有可搜索的列表吗?在微软的文档是不是关键字搜索,只有编号。
您没有使用Microsoft编译器,或者至少没有使用Microsoft编译器前端。该警告由Clang前端打印。(GCC有一个非常类似的警告,也称为-Wchar-subscripts,但是消息的措词略有不同。)
Clang和GCC不会使用数字作为警告,而是使用名称。您可以使用以下编译指示来禁用诊断:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wchar-subscripts"
Run Code Online (Sandbox Code Playgroud)
随后是应在没有警告的情况下进行编译的代码,使用此代码,您可以还原警告的先前状态(通常启用):
#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)
请注意,它GCC之所以说“ ”,是因为实际用法实际上适用于GCC和Clang。