C 什麼時候需要將 include寫到頭檔案,什麼時候需要寫到cpp檔案?

時間 2021-06-02 04:33:47

1樓:lzyoung

為了加快C++程式的編譯速度,盡量在cpp中而不是在標頭檔案中#include其他標頭檔案。除非標頭檔案中宣告的類需要繼承某個類,或者使用了非指標和非引用型別的宣告(包括類成員變數和函式引數),否則在標頭檔案中都應該使用前置宣告。

2樓:陳林熙

其實,這問題是很難解決的,因為涉及到模板的問題.

你看C++的標準庫,全是標頭檔案,我建議採用這種辦法,這種辦法依然無法避免迴圈引用的問題.等C++支援Modules就可以解決這個問題了.

3樓:余世傑

剛好這兩天遇到了這個問題也在想。

作為乙個普通程式設計師,如果我.h中用到了需要#include的類啊函式啊,那就加到.h中,沒用到就加到.cpp中。

理由大概是自己的標頭檔案通常還會被其他檔案包含,這樣造成別的檔案重複包含,雖然有#pragma once這種,但是有時候還是會出錯(遇到了包含#include 出錯注釋掉就編譯通過的情況),且重新編譯時流程拉長了。放到cpp中就只管那個cpp生成的.o的事情了,簡單明瞭,能簡單不要複雜化呀!

4樓:神棍

細節上需要和工程結合。

大局上可以參考,注意,是參考Google的C++編碼規範。

鏈結在此

0. 扉頁 - Google 開源專案風格指南具體的規範,還是需要和專案做一定的適配,修改。

有一些囉嗦了。

5樓:

如果你的標頭檔案用到了include裡的內容,很顯然include非放標頭檔案不可。不然你這個標頭檔案被另乙個cpp檔案include的時候會找不到定義。

至於標頭檔案沒有用到include裡的內容,只是cpp檔案裡用到了,那這樣隨你便。不過我的習慣是放cpp裡,因為如果都放標頭檔案裡,萬一哪一天定義乙個函式或變數結果重名那就GG了,排查起來夠找了。

6樓:暮無井見鈴

看你這個類怎麼用,以及其他類是否作為介面出現。

若其他類需要作為介面(用到該類相關型別的引數),則需要放到這個類的標頭檔案。

若這個類的實現可見,而其他類作為實現的一部分(成員或基類),則也需要放標頭檔案。

否則,若這個類的實現不必可見(使用 pImpl ),而其他類也不作為介面,則其他類的標頭檔案不必放進該類的標頭檔案,只需放進原始檔。

更泛化的放標頭檔案還是原始檔需要具體問題具體分析。

有時希望降低編譯依賴或保持 ABI 相容,就把盡量多的東西放原始檔,標頭檔案裡不放類定義。

有時希望促進內聯優化,就把盡量多的東西放在標頭檔案(為此有些函式定義需要用 inline )。

咬文嚼字 C 什麼時候會使用implicit呼叫,什麼時候會explicit呼叫?

Anonymous explicit 指定符 cppreference.com為啥轉換函式也能explicit呢,主要是為了解決safe bool的問題,關於safe bool的介紹看這裡 en.wikibooks.org wiki More C 2B 2B Idioms Safe bool至於是不...

c語言 b 什麼時候自減的

陳家駿 我補充一點,前 前 是立即運算,而後 後 是語句執行完再,會在當前語句執行完後再執行運算.for迴圈的括號裡一律用前 或前 因為後 後 浪費效能 總有人想害朕 包含 b 的表示式,表示式先求值,然後 b 的值自減。包含 a 的表示式,a先自增,然後表示式再求值。截圖1 表示式 b 0 可以看...

apple pencil筆尖什麼時候需要換?不換會怎樣?

葉耶耶 看自己的感受吧,覺得可以換了就該換了,筆尖的阻尼感還是很重要的 有需要筆尖的話可以看看安xx家的,我一直在用,阻尼感特別爽 左牽黃 今年我的筆斷觸越來越厲害了,後來去維修店檢查又是重灌系統又是更新軟體,又是拿別的機子測試,後來發現斜著寫就寫不出來了,有種沒墨的感覺。總之就讓人很煩躁,斷又不會...