首页 > 解决方案 > 为什么在定义我的函数时 gcc 会给我一个未定义的函数错误引用?

问题描述

这是我的 qsort.c 文件的源代码。在 main 中,我只需调用 my_qsort 并打印结果数组。

#include "qsort.h"


int partition(int* arr, int left, int right)
{
    int pivot = arr[right], i = left - 1, temp = 0;

    for (int j = 0; j < right; j++)
    {
        if (arr[j] < pivot)
        {
            i++;
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    temp = arr[i + 1];
    arr[i + 1] = arr[right];
    arr[right] = temp;
    return i + 1;
}

void my_qsort_recursize(int *arr, int left, int right)
{
    int partition_index = 0;
    if (left > right)
    {
        partition_index = partition(arr, left, right);

        my_qsort_recursive(arr, left, partition_index - 1);
        my_qsort_recursive(arr, partition_index + 1, right);
    }
}


void my_qsort(int *arr, int size)
{
    my_qsort_recursive(arr, 0, size - 1);
}

当我运行命令“gcc main.c qsort.c”时出现错误:

/tmp/ccMikxiR.o: In function `my_qsort_recursize':
qsort.c:(.text+0x18b): undefined reference to `my_qsort_recursive'
qsort.c:(.text+0x1a2): undefined reference to `my_qsort_recursive'
/tmp/ccMikxiR.o: In function `my_qsort':
qsort.c:(.text+0x1cb): undefined reference to `my_qsort_recursive'
collect2: error: ld returned 1 exit status

我不明白为什么这么说,因为我在 gcc 命令中同时指定了 main.c 和 qsort.c。我在这里犯了一个非常愚蠢的错误吗?我以前写过很多这样的函数,以前从来没有遇到过这个问题。

标签: c

解决方案


你在函数声明中拼错my_qsort_recursive了。my_qsort_recursize

您使用的是哪种文本编辑器/ide?通常他们会发现这个错误。我推荐 c/c++ 的 Visual Studio :)


推荐阅读