我们必须制作一个需要拆分成部分的项目。我们被要求创建一个.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中的代码,因为它包含在另一个文件夹中。那可能是什么问题?
答案 0 :(得分:2)
在评论中写的,您不应将.c
源文件包含在其他源文件中。以同样的方式命名.c
和相应的.h
文件是个好主意(例如functions.c
和functions.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