0
在一個特定的C工程中,文件file1.c使用函數FUNCTION2()。 FUNCTION2()在file2.c中聲明。 FUNCTION2()的extern聲明存在於file1.h中在不包含頭文件的情況下編譯
file1.c只添加file1.h。 在file1.h中,不添加file2.c/file2.h。仍編譯成功,功能正常。
在項目的編譯列表中,先編譯file2.c/file2.h。但是可以在不添加頭文件的情況下調用函數嗎?
標準做法是將FUNCTION2的forward extern聲明放在file2.h中,然後在調用FUNCTION2的所有源文件中放入'#include「file2.h」'或者如果你不想使用頭文件,源文件頂部的外部函數的本地聲明。你真的想做什麼?另一個角度 – selbie
:想想如果你有一天改變file2中的函數會發生什麼,例如其他返回值,那麼您需要檢查所有使用該函數的.c文件,而不是僅更新頭文件file2.h,然後編譯器會告訴修復的位置,而不是從鏈接器獲取未解決的錯誤。 –