我在堆栈变量上收到此警告:
warning: object.member may be used uninitialized in this function
在这种情况下,我不希望强制初始化只是为了摆脱警告,因为它消耗了CPU周期。该变量是POD结构,因此其上的memset
成本不为零。我可以验证该变量永远不会未经初始化使用,因此我只想禁止它发出警告。
通常,我确实要警告,只是在这种特定情况下不针对此特定变量。如何抑制警告?
看起来像是实用诊断工具是正确的方法,但是它们需要相当新版本的GCC(4.6)
该版本之前没有可接受的解决方案。
尝试这样做:
@@ Nawaz已经回答了具体询问的问题,但是您是否认为需要这样做的事实可能表明您宣布struct
的时间过早/嵌套范围不足?通常,如果您可以在实际可以初始化它的位置声明struct
,而不是更早地声明并在各个位置填充它,则通常会更可取。
GCC区分未初始化和自我初始化,例如编译:
被接受的答案有两个大问题,不仅仅需要评论。首先,它会禁用整个文件的警告。如果该编译指示位于标头中,则可能更多。警告是有用的,如果确实是误报,则应禁用一堆尽可能小的代码的警告。