我正在使用 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 编译它。
任何人都知道发生了什么。谷歌没有显示任何类似的主题...
编辑:
所以这是一个简单的例子:
#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在这两种情况下都不会编译它并产生与上述相同的错误。