【发布时间】:2016-03-03 02:53:22
【问题描述】:
我知道 gcc 中有一个未初始化的警告,可以告诉您变量是否未初始化。这对我来说很清楚。但我想知道什么是“Maybe-Initialized”警告?
gcc 是否不确定这是否已初始化。或者考虑一下,代码已正确初始化,而 gcc 认为“可能”它没有初始化。如果编译器不确定为什么我应该有这个警告?
现在我可以使用 -Wno-maybe-uninitialized 禁用警告或在代码中进行修复。
但我的问题是这意味着什么?为什么 gcc 认为它可能未初始化。 gcc 确定变量已初始化,因为我没有收到 -Wuninitialized。
我使用的是 GCC 4.8 Fedora 21 x86_64。
如果有人能说明如何触发此警告,我将不胜感激。
【问题讨论】:
-
要修复警告,您可以将变量初始化为某个默认值,例如 0。意外使用错误值 0 可能比导致未定义行为的未初始化值更好。两害相权取其轻。
-
同意。但这不应该是 Wunitialized 警告?。
-
如答案中所述,gcc无法确定是否发生未初始化的使用。
-
因此变量可能已正确初始化,但 gcc 会引发警告。
-
是的。它可能未初始化,但也可能没有。
标签: c++ gcc gcc-warning