我正在尝试编写一个近似π的程序。它基本上取0.00到1.00之间的随机点,并将它们与圆的边界进行比较,圆内的点与总点的比率应接近π(非常快速的解释,规范深入得多)。
但是,在使用gcc编译时出现以下错误:

Undefined                       first referenced
symbol                          in file
pow                             /var/tmp//cc6gSbfE.o
ld: fatal: symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status

怎么回事我以前从没见过这个错误,我也不知道为什么会这样。这是我的代码(虽然我还没有完全测试它,因为我无法通过错误):
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void) {
    float x, y;
    float coordSquared;
    float coordRoot;
    float ratio;
    int n;
    int count;
    int i;

    printf("Enter number of points: ");
    scanf("%d", &n);

    srand(time(0));

    for (i = 0; i < n; i++) {
        x = rand();
        y = rand();

        coordSquared = pow(x, 2) + pow(y, 2);
        coordRoot = pow(coordSquared, 0.5);

        if ((x < coordRoot) && (y < coordRoot)) {
            count++;
        }
    }

    ratio = count / n;
    ratio = ratio * 4;

    printf("Pi is approximately %f", ratio);

    return 0;
}

最佳答案

在编译(或链接)期间使用-lm以包括数学库。
像这样:gcc yourFile.c -o yourfile -lm

关于c - C编程-“文件中引用的 undefined symbol ”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13263716/

10-13 02:35