我有三个文件,test.c、foo.c、foo.h。
在 foo.c 中
#include "foo.h"
在测试.c中
#include "foo.c."
然后当我编译我的代码时,我使用 gcc -o test test.c,它编译了。
但是,我的教授告诉我,我应该使用
#include "foo.h"
在我的 test.c 而不是 #include foo.c
中,我应该这样编译它
gcc -o test test.c foo.c
第二种方式更受欢迎吗?如果是,为什么?这两个编译有什么区别?
最佳答案
在大多数情况下,您不应该包含源文件(除非您可能希望包含一段由单独的脚本动态生成的代码)。源文件将直接传递给编译器。仅应包含头文件。
虽然您教授建议的方式是正确的,但在这种情况下,以下方式更具教育值(value):
gcc -c test.c
gcc -c foo.c
gcc -o test foo.o test.o
前两行将每个源文件编译成目标文件,第三行并没有真正编译,只是调用链接器从 2 个目标文件中生成可执行文件。这个想法是区分编译和链接,这将按照您教授建议的方式透明地执行。
关于c - 我应该用哪种方式编译我的 C 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15139758/