2013-04-15 26 views
0

假設我正在處理一個大型項目,並且需要在名爲example.c的源文件中訪問函數foo()。 foo()的原型也在example.c中聲明。 example.c沒有特定於此文件的頭文件,如example.h。從我正在處理的新源文件中訪問example.c的foo()的最佳做法是什麼?訪問C中現有函數的最佳實踐?

+1

製作自己的原型內部訪問富()? –

+2

@JoachimPileborg,這不是最差的做法之一嗎? – unkulunkulu

回答

5

如果沒有聲明該函數的頭文件,該函數可能並不打算用作接口。它僅用於在宣稱的地方使用翻譯單元。

  1. 檢查並確認設計爲何不將其作爲接口公開。
  2. 一旦確認#1,並且看到沒有任何問題通過外部TU使用,然後將函數聲明添加到頭文件中。將頭文件包含在TU中,該頭文件用於開頭,並在TU中包含希望使用此功能的頭文件。
0

只要example.c不包含main()函數,你可以做

#include <example.c> 

爲您的代碼的文件:

+0

原諒我誰downvoted,但我不同意,你可以做到這一點。如果你仍然不相信我,我可以向你展示一個工作示例:) –

+3

包含'.c'文件很少是一個好主意。這是獲取重複定義的簡單方法。 –

+0

如果這些函數依賴於外部定義,那麼會不會引發鏈接錯誤?那麼如果'.c'文件依賴於頭文件呢? – Joe