我目前有 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)
问题是什么?我听到了各种各样的事情,比如因为它们共享相同的头(“方法”在头文件中定义),所以编译器认为有两个。我不知道。你们有什么感想?
谢谢你,
编辑:谢谢您的回复。如果“方法”是“结构”函数怎么办?将其移动到其他地方仍然是一个好主意吗?我刚刚尝试过,现在我得到了一个“取消引用指向不完整类型的指针”。
“方法”在头文件中定义。
你不应该那样做。如果这样做,函数定义将进入包含标头的所有文件,这会导致链接错误,因为该方法将有多个版本。
您只需在头文件中声明该方法。在文件中定义它.c,编译它并将其链接到调用该函数的目标文件。
| 归档时间: |
|
| 查看次数: |
15710 次 |
| 最近记录: |