在特定变量上禁用GCC“可以未初始化使用”

问题描述 投票:30回答:5

我在堆栈变量上收到此警告:

warning: object.member may be used uninitialized in this function

在这种情况下,我不希望强制初始化只是为了摆脱警告,因为它消耗了CPU周期。该变量是POD结构,因此其上的memset成本不为零。我可以验证该变量永远不会未经初始化使用,因此我只想禁止它发出警告。

通常,我确实要警告,只是在这种特定情况下不针对此特定变量。如何抑制警告?


看起来像是实用诊断工具是正确的方法,但是它们需要相当新版本的GCC(4.6)

该版本之前没有可接受的解决方案。

c++ gcc compiler-warnings
5个回答
33
投票

尝试这样做:


5
投票

@@ Nawaz已经回答了具体询问的问题,但是您是否认为需要这样做的事实可能表明您宣布struct的时间过早/嵌套范围不足?通常,如果您可以在实际可以初始化它的位置声明struct,而不是更早地声明并在各个位置填充它,则通常会更可取。


4
投票

GCC区分未初始化和自我初始化,例如编译:


0
投票

被接受的答案有两个大问题,不仅仅需要评论。首先,它会禁用整个文件的警告。如果该编译指示位于标头中,则可能更多。警告是有用的,如果确实是误报,则应禁用一堆尽可能小的代码的警告。


© www.soinside.com 2019 - 2024. All rights reserved.