gpt4 book ai didi

关于潜在未初始化变量的编译器警告

转载 作者:太空宇宙 更新时间:2023-11-04 00:11:09 25 4
gpt4 key购买 nike

<分区>

考虑以下伪代码,它采用带有错误代码变量的典型错误处理策略:

(Edit1:当出现 uninit var 警告时,我添加了另一个用例。不,这个伪代码虽然是可编译的,但实际上不会触发 GCC 警告 (v4.9.2) . 但真正的(大得多的)代码在精神上与这个伪代码是相同的。)

int func1()
{
int err;
int a;
int b; // *Edit1*

err = func2( &a ); // init 'a' or fail with 'err'
if (!err)
{
b = 1; // *Edit1*
}

if (!err)
{
// use variable 'a'
// here compiler migth produce warning that 'a' might be uninitialized
}

if (!err) // *Edit1*
{
// use variable 'b'
// here compiler might produce warning that 'b' might be uninitialized
}

return err;
}

GCC 会发出警告,指出变量“a”可能未初始化。

典型的解决方案是在函数的开头添加(例如)a = 0;。但我正在寻找更通用/更优雅的东西。 (编译器无法优化多余的初始化。并非每个变量都有合理的默认值。)

我的问题是:如果 err 为没有设置?或者使用错误处理策略实现该目标的任何其他方法?

附言考虑到这种类型的错误处理非常普遍,我很困惑,我没能找到方法来制作没有不必要分配的无警告代码。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com