gpt4 book ai didi

c++ - 解决编译器错误 : pointer potentially uninitialized

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:12 24 4
gpt4 key购买 nike

我需要解决一个编译器发现的错误——我理解为什么它会发现那个错误但需要解决它因为函数(抛出错误)只会在指针 已初始化。

这是我的伪代码:

if (incoming_message_exists) 
{
msg_class* current_msg;

/*current_msg will become either value_1 or value_2*/

/*code block 1*/
if (condition_is_fulfilled)
{
current_msg = value_1;
}

/*code block 2*/
else
{
current_msg = value_2;
}

/*code block 3*/
/*bool function performed on current_msg that is throwing error*/
if (function(current_msg))
{
//carry out function
}
}

我不希望在 1 和 2 中执行代码块 3,但如果这是唯一的解决方案,那么我会这样做。提前致谢!

最佳答案

您向我们展示的 ifelse 分支是否来自两个不同的 if 语句?

如果是,则您当前的代码能够使 current_msg 未初始化。当您到达 function(current_msg) 时,这可能会崩溃。

如果您向我们展示了同一 if 语句的两个分支,则您的编译器是错误的 - 没有 current_msg 未被初始化的危险。但是,您可能仍需要更改代码以抑制警告,例如如果您将警告作为错误进行构建。

您可以通过在声明时初始化 current_msg 来修复/抑制警告

msg_class* current_msg = NULL;

如果您在任何一个分支中都没有其他代码,您也可以使用三元运算符进行初始化

msg_class* current_msg = condition_is_fulfilled? value_1 : value_2;

如果警告是真实的,您还必须检查 function 是否处理传递给 NULL 参数或防止这种情况

if (current_msg != NULL && function(current_msg))

关于c++ - 解决编译器错误 : pointer potentially uninitialized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16666734/

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