3
#include <stdio.h>
#include <math.h>

void main()
{
    int i, diff, sum = 0, num1 = 6, num2 = 2;

    for(i = 0; i <= 4; i++)
    {
        diff = num1 - num2;
        sum += pow(diff, i);
    }

    printf("%d", sum);
}

每当我尝试执行此程序时,都会弹出一条错误消息说:

在函数中main
未定义的引用pow

我在这里想念什么?

4

4 回答 4

12

这是链接器故障。您需要链接数学库,-lm在编译器命令的末尾指定。从man pow

与 -lm 链接。

于 2012-10-09T14:23:48.043 回答
6

数学库不是 libc 的一部分。您需要链接它:

gcc file.c -lm -o file
于 2012-10-09T14:24:25.437 回答
0

该函数pow()在数学库中定义。默认情况下,您的编译器不会将您的程序与该库链接,因此链接器无法解析对pow().

要解决此问题,您需要-lm在编译/链接行的末尾添加将数学库链接到您的程序。

于 2012-10-09T14:26:11.207 回答
0

我刚刚在我的 Turbo C 上运行了相同的程序,我得到了 341 的输出。检查你的头文件是否在你的 Turbo C 文件夹的 /include 文件夹中。确保检查它是否包含 Math.h 文件。

于 2012-10-09T15:58:16.803 回答