gpt4 book ai didi

C++ : how to make sure all variables are initialized?

转载 作者:太空宇宙 更新时间:2023-11-04 15:46:30 27 4
gpt4 key购买 nike

最近我在处理一个未初始化的变量时遇到了很多麻烦。

在Java中,变量的默认值为null,因此如果使用未初始化的变量,很可能会抛出异常。如果我理解,在 C++ 中,变量是用内存中的任何数据初始化的。这意味着该程序可能会运行,甚至可能很难知道它有什么问题。

处理这个问题的干净方法是什么?是否有一些好的编程习惯可以降低风险?在我的例子中,变量是在头文件中声明的,应该在 cpp 文件中初始化,这是一个更容易出错的例子。

谢谢


收到几个答案后的版本:

抱歉,我的问题不够具体。

我得到的答案是使用标志让编译器获得未初始化变量的通知,这将很有用。

但是也有极少数情况下的变量不能在一开始就初始化,因为这取决于你系统的行为。

在头文件中

double learnedValue;

在cpp文件中

/* code that has nothing to do with learnedValue
...
*/

learnedValue = a*b*c; // values of a, b and c computed in the code above

/*code making use of learned value
...
*/

现在发生的事情是忘记了行“learnedValue=a*b*c”。

但程序运行良好,只是在声明时使用内存中的任何内容初始化了 learnedValue 的值。

在 Java 中,这样的错误不是问题,因为使用学习值的代码很可能会崩溃或抛出异常(至少您知道出了什么问题)。

在 C++ 中,您显然可以很高兴,而根本不知道存在问题。或者?

最佳答案

请确保您在编译程序时设置了适当的警告级别。每当使用未初始化的变量时,编译器都会发出适当的警告。

在 g++ 上,-Wall 编译器选项会显示所有警告。

在 Visual Studio 上,您可能必须使用警告级别 4。

此外,市场上也有一些静态代码分析工具。 cppCheck就是这样一种免费提供的工具。

关于C++ : how to make sure all variables are initialized?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15894590/

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