同时编译外部.h和.c文件

时间:2016-04-25 13:46:02

标签: c

我们必须制作一个需要拆分成部分的项目。我们被要求创建一个.c文件,其中包含我们在课程中编写的函数。我们还被要求为原型创建一个.h文件。

我做了所有这些,它在我的电脑上工作正常。但是,我们使用main.c文件发送.exe文件,.h原型和.c函数文件,然后教师将其发送回来,说代码不会编译。

main.c的内容:

...
#include "functions.c"
#include "function_header.h"
...

functions.c的内容:

int getline(char s[], int lim) 
{
  int c,i;
  for(i = 0; i < lim && (c = getchar()) != '\n' && c!=EOF; i++)
    s[i] = c;
    s[i] = '\0'; // tömb lezárasa
    while(c != '\n' && c!=EOF)
      c=getchar(); // puffer ürítése
    return i;
}

function_header.h的内容:

int getline(char s[], int lim);

我不知道他的代码为什么不能编译。显然,当你打开一个全新的项目,并在main.c中复制该代码时,你将无法使用.c和.h中的代码,因为它包含在另一个文件夹中。那可能是什么问题?

1 个答案:

答案 0 :(得分:2)

在评论中写的,您不应将.c源文件包含在其他源文件中。以同样的方式命名.c和相应的.h文件是个好主意(例如functions.cfunctions.h

这样做:

main.c中:

...
#include "functions.h"
...

functions.c:

#include "functions.h"
...

functions.h:

int getline(char s[], int lim);

然后编译它(例如使用gcc):

gcc main.c functions.c

在处理头文件时还有其他一些事项需要注意:Include guards