Clang 3.4 を使用して Petsc でライブラリをコンパイルしています。
error: use of undeclared identifier 'creal'
それは、次の定義から導かれます。
petscmath.h:121:38: note: expanded from macro 'PetscRealPartComplex'
#define PetscRealPartComplex(a) creal(a)
私が見つけることができる唯一の関連情報はこれです。これがコンパイラ固有のものであり、いくつかのライブラリが欠落しているか、Petscに問題があるかはわかりません。
小さなテストファイルでそのまま`cimag()'を使ってみたのですが、clang3.4でもgcc4.8でもコンパイルできません。
何が起こっているのか、誰もが何らかの考えを持っています。Google は同様のトピックを表示しません...
編集:
簡単な例を次に示します。
#include <complex.h>
int main ()
{
double complex z;
double cc = cimag(z);
}
Gcc4.8 (macports から) でコンパイルします。g++-mp-4.8 main.cc -o main
ただし、c11 モードではそうではありません: g++-mp-4.8 -std=c++11 main.cc -o main
:
expected initializer before 'z' double complex z;
どちらの場合も、 clangはそれをコンパイルせず、上記と同じエラーを生成します。