我在 CodeBlocks(它使用 gcc)中编译了一个程序,它运行良好。现在我尝试从命令行使用 gcc 编译相同的程序。它产生了这个错误:
error: lvalue required as left operand of assignment
对于这四行:
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 个复数的实部和虚部。我将这些值分配给 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
更改为没有任何改变。