标准中是否有任何内容定义从它隐藏的变量初始化变量?
例如:
int i = 7;
{
int i = i;
}
Visual Studio 2013 允许这样做而不发出警告并按预期工作。内在i
变量是 7。然而,Clang 和 GCC 给我一个警告,关于从自身初始化的初始化变量将不会被初始化。
该标准是这样说的:
3.3.2申报点[基本范围.pdecl]
1 The 声明点因为名称紧接在其完整声明符之后
(第 8 条)及其之前初始化器(如果有的话),除非下面注明。
[ 例子:
int x = 12;
{ int x = x; }
这里第二个x被初始化
有它自己的(不确定的)价值。 —结束示例]
这正是你的情况。该程序通过访问未初始化的对象来表现出未定义的行为。
我的 VS2013 报告副本error C4700: uninitialized local variable 'i' used
对于这段代码。不确定为什么你的副本表现不同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)