所以我有一个源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