【发布时间】:2013-12-06 18:18:03
【问题描述】:
我正在使用 Clang 3.4 用 Petsc 编译一个库并得到:
error: use of undeclared identifier 'creal'
它遵循以下定义:
petscmath.h:121:38: note: expanded from macro 'PetscRealPartComplex'
#define PetscRealPartComplex(a) creal(a)
我能找到的唯一相关信息是this,我不知道这是否是特定于编译器的东西,是否缺少某些库,或者我对 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 不在这两种情况下都编译它并产生与上面相同的错误。
【问题讨论】: