2014-09-29 59 views
-1

我正在为一个类做一个项目,并且需要帮助将我的程序分解成单独的部分。我的老师给了我们一个提示,说明哪些文件会做什么,但他没有告诉我们如何编写头文件。根据我在线学到的知识,我将函数原型从每个.c文件放入其自己的.h文件中,并将其包含在.c文件中的“header.h”中。但是,我得到的编译错误,如如何将一个C文件分解成多个文件

course1.c:20:3: warning: implicit declaration of function ‘initialize’ [-Wimplicit-function-declaration] 
    initialize(courses, subjects, CRN); 
^
vector1.c:14:6: error: conflicting types for ‘resize’ 
void resize(char ***courses, char***subjects, int **CRN) { 
    ^
In file included from vector1.c:2:0: 
vector.h:11:6: note: previous declaration of ‘resize’ was here 
void resize(char ***subjects, char ***courses, int **CRNs, int *size); 
    ^
vector1.c:39:6: error: conflicting types for ‘deallocate’ 
void deallocate(char **courses, char**subjects, int *CRN) { 
    ^
In file included from vector1.c:2:0: 
vector.h:12:6: note: previous declaration of ‘deallocate’ was here 
void deallocate(char **subjects, char **courses, int *CRNs, int size); 

我敢肯定我的文件有正确的语法,因为我单独编译它们变成.o文件和他们工作得很好。有人可以请一般说明,如何将程序分解成单独的文件?我认为我显然做错了。编译器给我的一个错误是函数没有被定义,当它被明确定义在我包含的头文件中时。

+0

请格式化您的问题:)(在突出显示代码元素后,使用页面顶部的** {} **按钮)来帮助提高可读性,因为目前很难阅读。 – jbutler483 2014-09-29 12:40:40

+1

如果您阅读编译错误,您会看到存在相互冲突的函数减速。 'vector.h'和'vector1.c'中定义的'resize'和'deallocate'函数是不同的。 'initialize'函数有一个警告,这意味着在定义它之前使用调用该函数。这是一个警告,而不是编译错误。 – 2014-09-29 12:46:08

回答

1
course1.c:20:3: warning: implicit declaration of function ‘initialize’ [-Wimplicit-  function-declaration] 
    initialize(courses, subjects, CRN); 

这意味着你需要声明为

int initialize(courses, subjects, CRN); 

void initialize(courses, subjects, CRN); 

在旧的C风格如果不指定,编译器将其当作返回int

vector1.c:14:6: error: conflicting types for ‘resize’ 
void resize(char ***courses, char***subjects, int **CRN) { 
^
In file included from vector1.c:2:0: 
vector.h:11:6: note: previous declaration of ‘resize’ was here 
void resize(char ***subjects, char ***courses, int **CRNs, int *size); 
^

这意味着你在不同的位置定义的函数resize两次,原型是不同的(他们有不同数量的参数)。这与功能deallocate的功能相同。

+0

嘿约翰,我添加了初始化的声明到我包含的头文件。 – 2014-09-29 16:01:05

+0

你能告诉我你声明函数'initialize'的那一行吗? – 2014-09-29 20:03:07

相关问题