【发布时间】:2014-01-08 08:26:17
【问题描述】:
在一个特定的 C 项目中,一个文件说 file1.c 使用一个函数说 FUNCTION2()。 FUNCTION2() 在 file2.c 中声明。 FUNCTION2() 的外部声明在 file1.h 中
file1.c 只添加了 file1.h。 在 file1.h 中,没有添加 file2.c/file2.h。仍然编译成功,功能正常。
在工程的编译列表中,首先编译的是file2.c/file2.h。但是不加头文件可以调用函数吗?
【问题讨论】:
-
标准做法是将 FUNCTION2 的前向 extern 声明放在 file2.h 中,然后将
#include "file2.h"放在所有调用 FUNCTION2 的源文件中,或者如果您不想使用头文件,请放置源文件顶部的外部函数的本地声明。你真正想做什么? -
从另一个角度:想想如果有一天你改变了 file2 中的函数会发生什么,例如其他返回值,那么你需要遍历所有使用该函数的 .c 文件,而不是仅仅更新头文件 2.h,编译器然后会告诉在哪里修复而不是从链接器获得未解决的错误。
标签: c compilation compiler-errors