次のコードはC言語ではうまくコンパイルされて実行されますが(少なくとも 'gcc -std = gnu99'に従います)、C++でコンパイルできません。 "行5:エラー:doubleをdoubleに変換できません。複合体 'を初期化します。なぜ誰が知っていますか?Cの複素数C++?
#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複素数を使用する必要があります。あなたが助けることができればありがとう!
しかし、実際に、_why_あなたが使用したくない[ 'のstd ::複雑な<>'](のhttp:// en.cppreference.com/w/cpp/numeric/complex)? – ildjarn
FTR、 '-std = gnu99'は本当に** C **のためのフラグではありません。それは「GNUの考えが良い考えだが、それがあるかどうかは解釈のためのものだ」というものです。あなたが** C **を望むなら '-std = c99'が望ましいです。 –
ildjarn:残念ながら、私が使っているライブラリはC++でC99の複素数を使用しています。このようにプロジェクトを開始するのは賢明ではないようですが、これは私が作業しなければならないコードです。 Martinho:それは本当です。私はテストを行ったはずです-std = c99 – iloveponies