所以我有一個源mainClass.c在那裏我主要的定義。我有一個頭文件class1.h以及在class1.c在class1.h定義的所有功能的實現。我在class1.h名爲COND和在class1.c被用於現在並可能在未來的互斥兩個變量(全局),我會在我的mainClass.c使用它。 我們編譯所有的源文件生成我做的事情一個目標文件,如下所示:如何編譯多個.c和.h文件在GCC Linux呢?
gcc -Wall -pthread -I/home/2008/ariarad/mainClass1 mainClass1.c class1.c -o out
/家/ 2008/ariarad/mainClass1就是我所有的頭文件和源文件是在和我在一個.c文件中使用pthead.h。儘管我已經把它列入了它,但我不得不加入它。
現在,當我運行上面的命令,我得到了以下錯誤:
class1.c:3:16: error: redefinition of ‘cond’
class1.h:66:16: note: previous definition of ‘cond’ was here
class1.c:4:17: error: redefinition of ‘mutex’
class1.h:67:17: note: previous definition of ‘mutex’ was here
以防萬一,我周圍的class1.h避免多次列入一個IFNDEF與ENDIF塊。我絕對不會重新定義.c文件中頭文件中定義的變量。那麼,有人可以幫助我,爲什麼它仍然給我的錯誤?
只是爲了確保?你的#ifndef CLASS1_H_ /#定義CLASS1_H_/#ENDIF之間用你的代碼?你需要定義不只是#ifndef – DanChianucci 2013-02-17 04:07:35
寫一個makefile? – 2013-02-17 04:07:38
@ Trump211 yup! – as3rdaccount 2013-02-17 04:08:14