错误 - “(.text+0x0):‘方法’的多重定义”(C 程序)

Ell*_*lea 3 c makefile

我目前有 2 个 C 程序和 1 个头文件,我必须将它们制作成 Makefile。我对将程序编译成 Makefile 很陌生,但我了解基础知识。我输入:

cc -c file1.c

cc -c file2.c

cc file1.o file2.o
Run Code Online (Sandbox Code Playgroud)

----- 我收到以下错误 -----

file2.o: In function 'method':

file2.c:(.text+0x0): multiple definition of 'method'

file1.o:file1.c:(.text+0x0): first defined here

collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

问题是什么?我听到了各种各样的事情,比如因为它们共享相同的头(“方法”在头文件中定义),所以编译器认为有两个。我不知道。你们有什么感想?

谢谢你,

编辑:谢谢您的回复。如果“方法”是“结构”函数怎么办?将其移动到其他地方仍然是一个好主意吗?我刚刚尝试过,现在我得到了一个“取消引用指向不完整类型的指针”。

cod*_*ict 5

“方法”在头文件中定义。

你不应该那样做。如果这样做,函数定义将进入包含标头的所有文件,这会导致链接错误,因为该方法将有多个版本。

您只需在头文件中声明该方法。在文件中定义.c,编译它并将其链接到调用该函数的目标文件。