假設我們有函數(外部只考慮這裏)int foo(int a,char * b),通常會有一個頭文件記錄函數的作用,每個參數和返回值的作用等。也可能是doxygen格式。我的習慣是這樣的頭文件應該放到.h文件中,因爲這是定義接口的地方,讀者應該擁有那個地方的所有信息。但是很多人將這樣的頭文件保存在C文件中實際實現的地方。我在Linux內核代碼中也看到了這一點。那麼我錯了嗎?你更喜歡哪個?C函數標頭位置:.h或.c?
1
A
回答
1
回答這個問題在很大程度上是「這取決於」:
要看什麼呢?誰在閱讀文檔,以及他們如何訪問它。
如果您正在開發程序,那麼將文檔嵌入到實現中可能是確定的,因爲任何想了解您的程序的人都可以訪問源代碼並閱讀它。您的目標受衆可能是開發人員在開發程序本身,因此將C文件中的文檔以及他們正在處理的大量代碼放在一起是一種合適的方法。
如果您正在開發庫,目標受衆會發生變化(或者您可能有兩個目標受衆)。您仍然擁有開發人員,他們可以使用更詳細的文檔,因爲它與私人實施細節有關。您還擁有圖書館的用戶,他們只關心他們正在使用的界面;從代碼瀏覽的角度來看,他們通常只能訪問頭文件。
3
儘管頭文件可以以任何方式使用,但它們主要是一種啓用外部鏈接的機制。
您設計了一個用於外部消費的API,並且將所有需要使用此API(常量,類型,原型)的所有內容放在頭文件中。
所有其他的東西,這是實現的一部分,並不需要被外部用戶看到,可以進入源文件(如果使用本地化爲一個文件)或私有頭文件在多個文件之間共享。後者是頭文件啓用外部鏈接的另一個例子,但是用於內部消費。
0
我把它們放在.h文件中,當它是我的選擇時,如果我有.h文件。如果我只有一個.c文件,我將在定義它們時記錄這些函數,只是因爲如果我只是有一個.c文件,我可能仍然在編碼,如果我更改了代碼,我想更改文檔。
我覺得文檔和聲明放在一個完成的c項目的單獨文件中。代碼中的文檔分解了代碼,可能是多餘的。
如果我在某處做出貢獻,我會遵循既定的約定。
相關問題
- 1. C++着的.h頭文件
- 2. C頭文件的位置
- 3. C# - HttpWebResponse標頭未設置
- 4. C語言中包含濾波器係數的C++頭文件(.h)或.h文件
- 5. C++函數默認參數的位置
- 6. H.264流標頭
- 7. 頭文件(.h)中創建C編程
- 8. C中的位操作 - 內置函數
- 9. 函數在C++中的位置?
- 10. 缺少函數頭C++
- 11. C函數頭生成器
- 12. Matlab或C函數
- 13. C/C++:函數參數列表中的`const`位置
- 14. C#XNA鼠標位置
- 15. C標準庫的位置
- 16. C++檢查光標位置
- 17. 分位數函數boost(C++)
- 18. 使用CPLEX(C++)重置目標函數
- 19. 最小的n位整數C,H位設置爲1(動態編程)
- 20. 開源的Objective C(或C/C++)音頻庫到H.323?
- 21. C++獲取世界座標中的攝像頭位置(opencv)
- 22. 設置CLion在創建新的C++類時使用.hpp頭,而不是.h頭?
- 23. JSF 2.0 Mojarra h:頭標記
- 24. C++中的.h
- 25. 在目標C中實現標頭C
- 26. ONVIF c# - 設置osd或攝像頭標題
- 27. C++ win32設置光標位置
- 28. 設置鼠標位置不工作c#
- 29. C中的函數的++名稱或C
- 30. c或C++中main()函數的原型?
你是指文檔評論應該去哪裏?如果文檔不是源文件本身,而是通過(比如說)doxygen進行預處理,那麼真正的文檔就是HTML/PDF文件,所以不管它是在'.h'還是'。 C'。 – jxh
我應該補充一點,重要的是一致性,以便將來的開發人員可以遵循可預測的和可接受的編碼實踐。 – jxh
@jxh是文檔評論。我只考慮代碼瀏覽場景。使用HTML/PDF顯然不重要。 – lang2