头文件中的函数无法工作而不包括.c

时间:2015-03-19 18:59:11

标签: c function

我尝试在C中编写程序,我不能使用.h中的函数而不包括.c文件。如果我在包括.h之后加入.c就行了。我得到了#34;未定义的引用..." .h。

中定义的每个函数的错误

main.c中:

#include "mp.h"
//#include "mp.c"
int main()
{
    int n;
    printf("Unesite broj clanova niza: ");
    scanf("%d",&n);
    int *a=(int *)malloc(n*sizeof(int));
    if (a==NULL) exit(0);
    unos(a,n);
    sortiranje(a,n,rastuci);
    stampanje(a,n);
    sortiranje(a,n,opadajuci);
    stampanje(a,n);
    return 0;
}

mp.h:

#ifndef MP_H_INCLUDED
#define MP_H_INCLUDED


#include <stdio.h>
#include <stdlib.h>
enum tip_sort {opadajuci,rastuci};
void unos(int *, int);
void sortiranje(int *, int, enum tip_sort);
void stampanje(int *, int);

#endif // MP_H_INCLUDED

mp.c:

#include "mp.h"


void unos(int *a, int n){
    ...
}
void sortiranje(int *a, int n, enum tip_sort t){
    ...
}
void stampanje(int *a, int n){
    ...
}

1 个答案:

答案 0 :(得分:2)

您所看到的是链接器错误。我想,你正试图单独编译main.c

您的编译语句应该类似于

gcc main.c mp.c -o output

是的, #include .c(来源)文件。源文件应该被编译并链接在一起以形成二进制文件。

注意:另外,请do not cast malloc()的返回值。