【发布时间】:2017-07-31 14:30:29
【问题描述】:
我在同一目录中有文件:
selection_sort.c
#include <cs50.h>
#include "selection_sort.h"
void selection_sort(int values[], int n)
{
for (int i = 0; i < n; i++)
{
int min_index = i;
for (int j = i+1; j < n; j++)
{
if (values[j] < values[min_index])
{
min_index = j;
}
}
int temp = values[i];
values[i] = values[min_index];
values[min_index] = temp;
}
}
注意:这个 selection_sort() 在我之前的使用中运行良好。
selection_sort.h
#include <cs50.h>
void selection_sort(int values[], int n);
最后一个文件是测试文件,命名为 test_selection_sort.h
#include <cs50.h>
#include <stdio.h>
#include <stdlib.h>
#include "selection_sort.h"
int test_array[] = {2,4,7,5,9,1,3,6,8};
int main()
{
int size = sizeof(test_array);
selection_sort(test_array,size);
for (int i = 0; i < size; i++)
{
printf ("sorted %d", test_array[i]);
}
}
但是当我编译时它显示了对“selection_sort”的未定义引用:
$ make test_selection_sort
....undefined reference to `selection_sort'
我想了解定义的头文件的问题和我的错误用法?
编辑:
我现在可以制作文件了:
$gcc -o selection selection_sort.c test_selection_sort.c
$./selection
【问题讨论】:
-
int min_index = values[i];-->int min_index = i; -
int size = sizeof(test_array);-->int size = sizeof(test_array)/sizeof(*test_array); -
values[min_index] temp;-->values[min_index] = temp; -
问题嵌套在您的 Makefile 中的某处。请将其添加到您的问题中以获得进一步的帮助。
-
显示
Makefile
标签: c segmentation-fault header-files cs50