2014-09-29 108 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

相關問題