2015-09-17 71 views
-1

這個問題是關於C++超過一年後,我無法解決或找到任何解決方案。我習慣於在C中爲頭文件和代碼使用單獨的文件,但是我在C++中遇到了問題:無論何時編輯頭文件並嘗試編譯再次使用它的代碼,編譯器都不會注意標題上的變化。關於更新C++頭文件

我所要解決的問題是單獨編譯頭文件(.hpp)。有時我只是將它添加到g ++的源文件列表以及其他代碼中,但是接下來會發生的是我必須執行兩次命令(第一次給出錯誤,而不是第二次)。它還警告我,我在主文件中使用「一次編譯指示」選項。

我知道這是非常錯誤的,所以我尋找了一個正確的方法來做到這一點,但沒有成功。我注意到g ++生成「.gch」文件,但我不知道它們的目的是什麼,儘管它們可能是相關的。

我懷疑問題是由於「.hpp」中的代碼引起的。我知道(我認爲)這樣做的好方法是僅在頭文件中定義原型,並將方法體寫入單獨的文件中,但有時(特別是在使用模板時)會產生更多問題。

+3

您的確在以各種錯誤的方式構建您的程序。儘管如此,我們無法對您的問題進行任何說明。編譯器不能「注意到」所做的更改,因爲當你編譯它時,源文件以及它包含的任何東西都將被完全編譯。更可能的是,您沒有正確配置您的構建系統來解決源代碼頭依賴關係。如果您使用的是GNU Make,[本文檔](https://www.gnu.org/software/make/manual/html_node/Automatic-Prerequisites.html)將幫助您;在此期間,我們不確定我們可以提供幫助。 –

+0

@LightnessRacesinOrbit我無法弄清楚如何讓另一個用戶看到我在做一件壞事,並在這裏給你留言。我只是想讓你知道你的個人資料中的艾麗西亞·希爾弗斯通引用了我的一週。謝謝你,先生。 – RyanP

+0

@RyanP:lol np; p –

回答

0

.gch是一個預編譯的頭文件,如果您明確地編譯頭文件,它會被創建。
然後編譯器將使用該文件而不是實際的頭文件(編譯器不關心修改時間戳)。

執行rm *.gch並將所有標題永遠留在編譯命令之外。

(並且不要將模板實現放在.cpp文件中。)

+0

沒關係好點 –