gpt4 book ai didi

CMPLX 使用 GCC 产生 undefined symbol

转载 作者:行者123 更新时间:2023-12-04 17:24:18 24 4
gpt4 key购买 nike

我试图在使用 GCC 编译时使用复杂的文字来解决问题。考虑以下

#include <stdio.h>
#include <complex.h>

int main(void)
{
double complex z = CMPLX(0.0, -1.0);
printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
return 0;
}

(从 the reference page 略微修改)。如果我用 Clang 编译,它会按预期工作。但是,如果我使用 GCC,我会收到 undefined reference 错误
gcc -std=c11 mwe.c
mwe.c: 6:24 warning: implicit declaration of function 'CMPLX' ...
mwe.c:(...) undefined reference to `CMPLX'

我已经在 Linux 上的 GCC 4.7 和 7.2 和 MacOS 上的 GCC 9 上尝试过这个。错误消息发生了变化,但最终结果保持不变。审查 reference for CMPLX ,这应该是有效的 C11。基于 this answerthis post ,看起来 GCC 之前接受了这个构造。

我的底线问题是:为什么我不能使用 CMPLX与海湾合作委员会?

最佳答案

看起来这是由我拥有的系统上的标题/库断开引起的。用 -save-temps 编译标志,似乎 GCC 使用 complex.h 的系统 header .这意味着所选的 Xcode SDK 的 usr/include/complex.h在 MacOS 和 /usr/include/complex.h 上在 Linux 上。在 MacOS 上,CMPLX宏仅在使用 Clang 时定义。我拥有的 Linux 是 RHEL 6,这意味着标题针对没有 CMPLX 的 GCC 3 .基于 this bug report 上的讨论,看起来确保定义的宏不符合 GCC。

简短的回答是:编译器/平台组合不支持它。使用 native 编译器或更新系统。

关于CMPLX 使用 GCC 产生 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58937664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com