私は混乱させる質問をしたいと思います。私はそのように文字列をスキャンし、それを実数に変換しようとしています。その数値を使って価値を計算する。ここに私のコードは次のとおりです。"はこの関数で初期化されていないかもしれません[-Waybe-uninitialized]"
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-未初期化] nblocksの=(10 /(nsamps/f_s)); "
この問題を解決するのに役立つ理想はありますか?
ありがとうございました。 v[i]
は「MHzの」も「kspsの」でもない場合、その後、f_s
に何かを代入するコードが実行されていないため、初期化されていないf_s
を残して決してしていることを意味
注:同じ理由で、 'f_0'が初期化されていない可能性があります。 –
さらに、 'f_s'の値は初期化されていなければゼロかもしれません。その場合、最後の行でゼロ除算が試行されます( 'nblocks = floor(10 /(262144/f_s))')。これは、セグメンテーションフォールトをトリガーする場合とトリガーしない場合がありますが、間違いなくあなたが望むものではありません。 – Striezel