首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >creal和cimag问题与Clang 3.4

creal和cimag问题与Clang 3.4
EN

Stack Overflow用户
提问于 2013-12-06 18:18:03
回答 1查看 477关注 0票数 0

我正在使用Clang3.4编译一个带有Petsc的库,并获得:

代码语言:javascript
复制
error: use of undeclared identifier 'creal'

其定义如下:

代码语言:javascript
复制
petscmath.h:121:38: note: expanded from macro 'PetscRealPartComplex'
#define PetscRealPartComplex(a)      creal(a)

我能找到的唯一相关信息是,我不知道这是否是特定于编译器的信息,是否缺少一些库,或者我对Petsc有一些问题。

我尝试使用‘`cimag()’,因为它位于一个小的测试文件中,但是我不能用clang3.4或gcc4.8编译它。

任何人都知道发生了什么。谷歌没有显示任何类似的主题..。

编辑

下面是一个简单的例子:

代码语言:javascript
复制
#include <complex.h>
int main ()
{
   double complex z;
   double cc = cimag(z);
}

它确实用Gcc4.8编译(来自macport):g++-mp-4.8 main.cc -o main

然而,在c11模式下,它没有:g++-mp-4.8 -std=c++11 main.cc -o main

代码语言:javascript
复制
expected initializer before 'z' double complex z;

在这两种情况下,clang都不会编译它,并产生与上面相同的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-09 09:42:10

参考资料:http://pubs.opengroup.org/onlinepubs/7999959899/basedefs/complex.h.html

标题应定义以下宏: 络合 扩展到_Complex。

参考资料:http://en.cppreference.com/w/c/numeric/complex

如果编译器定义了宏常量STDC_NO_COMPLEX(C11),则不提供此处列出的标题和所有名称。

请注意,在使用GCC指定-std=c++11时,我得到了相同的结果,但没有使用-x c -std=c11。YMMV

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20430853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档