簡體   English   中英

沒有頭文件的C ++函數

[英]C++ functions without header file

單獨使用C ++函數需要頭文件和代碼文件嗎?

我正在編寫一些C ++函數,這些函數使用我的一些其他C ++類,但不屬於類本身。 它們打算在dll中編譯,所以我想知道是否有必要在單獨的頭文件中聲明它們,或者我是否可以/應該將聲明放在.cc文件中。

也許這只是不好的做法?

頭文件很有用,因為它能夠讓其他源文件知道在不同的轉換單元中聲明的函數。

編譯器必須能夠檢查您調用的內容對於類型檢查器是否正確。 但必要性來自聲明本身而不是來自頭文件的存在。

對於DLL,如果我沒記錯的話,你不會因為無論何時使用它都要聲明函數的簽名而被迫這樣做,例如。

extern C __declspec(dllimport) void foo();

當然這意味着你需要轉發聲明它們,所以我沒有看到你的DLL的頭文件有任何問題,它只會將所有簽名保存在一起。

如果要使用定義它的源文件之外的函數,則絕對需要聲明。 最好將聲明放在頭文件中以使其保持一致,否則您最終會重復自己並引入潛在的錯誤來源。

這不是絕對必要的,但強烈建議。

將函數聲明放在頭文件中,將函數定義放在源(.cc)文件中。 動機是允許用戶(這里是其他程序員)只查看接口而不是實現(因為它可以改變)。 此外,它允許其他源文件包含您的頭文件並使用您提供的功能。

唯一的例外是靜態函數,它們不應在頭文件中聲明,因為它們不應在源文件之外查看或使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM