gpt4 book ai didi

c++ - "may be used uninitialized in this function [-Wmaybe-uninitialized]"

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

我想问一个让我困惑的问题。我正在尝试扫描字符串并将其转换为实数。使用该数字来计算值(value)。这是我的代码:

string input_file_name1 = "shen_test_38_30_60__78_26_38_b_100_ch1-533.0-mhz-8000.0-ksps-2016-06-20-17.24.19-utc.dat";

string input_file_name2 = "shen_test_38_30_60__78_26_38_b_100_ch2-533.0-mhz-8000.0-ksps-2016-06-20-17.24.19-utc.dat";

std::ifstream input1(input_file_name1.c_str() , std::ios::binary | std::ios::in);
std::ifstream input2(input_file_name2.c_str() , std::ios::binary | std::ios::in);

split(input_file_name1, '-', v);

for(unsigned i=1; i < v.size(); i++)
{
if(v[i] == "mhz"){
f_0 = atoi(v[i-1].c_str())*1e6;
}

if(v[i] == "ksps"){
f_s = atoi(v[i-1].c_str()) * 1e3;// f_s = 8e6;
}
}

double nblocks; //f_s = 8e6;

nblocks = floor(10 / (262144 / f_s));

当我编译时,我收到了这条消息:

“警告:‘f_s’可能未初始化地用于此函数 [-Wmaybe-uninitialized] nblocks = (10/(nsamps/f_s));”

你有什么理想可以帮我解决这个问题吗?

非常感谢。

最佳答案

这意味着如果 v[i] 既不是“mhz”也不是“ksps”,那么分配给 f_s 的代码永远不会执行,因此留下 f_s 未初始化。

您可以像这样阻止此警告:

for(unsigned i=1; i < v.size(); i++)
{
if(v[i] == "mhz"){
f_0 = atoi(v[i-1].c_str())*1e6;
}
else if(v[i] == "ksps"){
f_s = atoi(v[i-1].c_str()) * 1e3;// f_s = 8e6;
}
else
{
// v[i] is none of the expected values
f_s = -1;
... take more action
}
}

关于c++ - "may be used uninitialized in this function [-Wmaybe-uninitialized]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40491786/

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