CodeBlocks (gcc を使用) でプログラムをコンパイルしたところ、問題なく動作していました。コマンドラインからgccを使用して同じプログラムをコンパイルしようとしました。このエラーが発生しました:
error: lvalue required as left operand of assignment
これらの 4 行の場合:
OutArray[Index[g]].real() = TempVBF.FirstReal[g];
OutArray[Index[g]].imag() = TempVBF.FirstImag[g];
OutArray[Index[g]+ElementSize].real() = TempVBF.SecondReal[g];
OutArray[Index[g]+ElementSize].imag() = TempVBF.SecondImag[g];
これらの行には、2 つの複素数の実部と虚部を含む 4 つの値があります。これらの値を 2 つの複雑な変数に割り当てています。私はこのようにそれをやろうとしました:
OutArray[Index[g]] = (TempVBF.FirstReal[g],TempVBF.FirstImag[g]);
コンパイルしたが、実行時に間違った値を生成した
なぜ最初にコンパイルしたのに、今はコンパイルしなかったのですか?? これらの行を変更せずにこれを回避するには、どのオプションを使用できますか??
私はコマンドを使用しています:
gcc lib/Globals.cpp lib/Comp/SNT_FFT_Comp.cpp lib/Comp/ST_FFT_Comp.cpp lib/Comp/VNT_FFT_Comp.cpp lib/Comp/VT_FFT_Comp.cpp lib/Decomp/* test/main.cpp -lpthread -std=gnu++0x -o TEST
削除-std=gnu++0x
すると、さらに多くのエラーが発生します。に変更して-std=c++0x
も何も変わりません。