是否仅 #pragma 每个编译单元应用忽略的 GCC 诊断?

Will #pragma GCC diagnostic ignored be applied only per compilation unit?

提问人:markzzz 提问时间:10/28/2023 最后编辑:markzzz 更新时间:10/28/2023 访问量:38

问:

找不到任何关于 GCC 的具体文档。

问题是:如果我在 .cpp 文件上设置(例如)a,这是否仅在此语句之后应用于整个编译单元?#pragma GCC diagnostic ignored "{some-diag}"

还是在第一次执行后默认启用并应用于所有下一次编译(通过不同的编译单元)?

标头的相同问题:如果 .hpp 包含 ,一旦启用,它将应用于其他编译单元,即使该标头不会包含在它们中?#pragma GCC diagnostic ignored "{some-diag}"

C++ GCC 编译器-警告

评论

0赞 Pepijn Kramer 10/28/2023
它将是源文件的本地文件,因此从它发生的那一刻起,它将处于“活动”状态,直到当前文件结束。
0赞 markzzz 10/28/2023
@PepijnKramer编辑了这个问题。对于未包含在其他复合单元中但启用该忽略语句的标头怎么办?
0赞 Pepijn Kramer 10/28/2023
AFAIK 它仍然是本地的,仅在该头文件中应用 ot 警告。但 imo 的最佳实践是将其与 #pragma 诊断推送(和弹出)结合使用,以真正保持忽略尽可能本地。并且只针对第三方错误这样做。这些警告的存在通常是有原因的。

答: 暂无答案