c - 为什么在定义我的函数时 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。我在这里犯了一个非常愚蠢的错误吗?我以前写过很多这样的函数,以前从来没有遇到过这个问题。
解决方案
你在函数声明中拼错my_qsort_recursive
了。my_qsort_recursize
您使用的是哪种文本编辑器/ide?通常他们会发现这个错误。我推荐 c/c++ 的 Visual Studio :)
推荐阅读
- cobol - COBOL 中的 COMP VALUE ZERO 是什么意思?
- sql - 连接 XML 嵌套 SQL
- python - 如何使用 Celery(无第三方包)发送 Django 的密码重置邮件?
- javascript - 由于 Bootstrap,javascript GET 和 POST 方法不起作用
- sse - 用另一个字节替换一个字节
- .net-core - 在跨平台的 .NET Core 可执行文件中,如何指定本机依赖项的路径/将它们放在哪里?
- linux - 使用 AWK 将文件的第一列拆分为多列
- couchdb - 带有时间戳过滤的 CouchDB Count Reduce
- postgresql - 如何删除 pgAdmin 4 旧版本?
- php - 发布未捕获复选框响应