C 和 <complex.h> 文件

C and the <complex.h> file

我的简单程序compTest.c

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

int main(void)
{
    double complex z = 1.0 + 1.0 * I;

    printf("|z| = %.4f\n", cabs(z));

    return 0;
 }

在 Linux 系统上使用标准库并使用 gcc 编译时,我是否需要包含 -lm 标志才能正常工作?

示例:

gcc -o executableName fileName.c -lm

如果我不这样做,我会得到以下信息: /tmp/cc1o7rtt.o: 在函数“main”中:

comTest.c:(.text+0x35): undefined reference to `cabs'
collect2: error: ld returned 1 exit status

看来你已经发现答案是肯定的了

-lm 标志告诉 linker link 数学库,其中包含 cabs 函数的代码。 (这是一个 gcc/Linux 问题,不是 C 语言问题。)

cabs 的 Linux 手册页明确指出 Link with -lm.

(一般来说,如果你想调用 any 库函数,但你不是 100% 确定如何使用它,请阅读手册页。)