Oct*_*bin 4 c pointers splint definition
我知道局部变量在未设置时可以具有"随机"值,但是用指针设置局部变量的第一个值是不是很糟糕?例如:
void setValue(int* p_val)
{
*p_val = …; /* Assignment does not use *p_val */
}
int main(void)
{
int val;
setValue(&val);
printf("%d", val);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
其中setValue仅设置并且从不读取引用变量的值.Splint警告我val是"在定义之前使用",我对这个警告有点惊讶,因为我相信在执行printf之前设置val的值并使用val.夹板是否不够先进,无法识别用于设置初始值的参考?
如果setValue(&val); 没有指定val通过指针尊重的东西,那么你的代码的行为定义,分析工具不正确.
但是如果你可以避免变量处于未初始化状态(没有多余的任务),那么这将是更可取的.是否有可能重构
int val = setValue();
Run Code Online (Sandbox Code Playgroud)
说?
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |