小编Kei*_*ing的帖子

CMPLX 使用 GCC 产生未定义的符号

我试图在使用 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;
}
Run Code Online (Sandbox Code Playgroud)

(从参考页面稍微修改)。如果我用 Clang 编译,它会按预期工作。但是,如果我使用 GCC,我会收到未定义的引用错误

gcc -std=c11 mwe.c
mwe.c: 6:24 warning: implicit declaration of function 'CMPLX' ...
mwe.c:(...) undefined reference to `CMPLX'
Run Code Online (Sandbox Code Playgroud)

我已经在 Linux 上的 GCC 4.7 和 7.2 和 MacOS 上的 GCC 9 上尝试过这个。错误消息发生了变化,但最终结果保持不变。查看 的参考CMPLX,这应该是有效的 C11。根据这个答案这篇文章,似乎 GCC 之前接受了这个构造。

我的底线问题是:为什么我不能CMPLX与 GCC 一起使用?

c gcc complex-numbers

5
推荐指数
1
解决办法
338
查看次数

标签 统计

c ×1

complex-numbers ×1

gcc ×1