下面的代码在C中可以编译和运行(至少按照'gcc-std = gnu99'的说法),但在C++下无法编译,报错为“第5行:错误:无法将'double'转换为'双倍复数'进行初始化”。有人知道原因吗?
#include "/usr/include/complex.h"
#include <stdio.h>
int main(int argc, char * argv[]) {
double complex a = 3; // ERROR ON THIS LINE
printf("%lf\n", creal(a));
return 0;
}
我意识到在C++中有另一种处理复数的方式,但是我必须使用C语言中的复数来处理C++,因为这就是我得到的旧代码所采用的方法。如果您能帮忙,感谢!
std::complex<>
呢? - ildjarn-std=gnu99
并不是你真正想要的编译选项。它是“带有GNU认为是好主意的东西的C语言”,但这是否是好主意存在不同解释。如果你想用C语言,建议使用-std=c99
编译选项。 - R. Martinho Fernandes