2014-01-28 39 views
0

我在Visual C++ 2008一個很奇怪的問題:Visual Studio 2008的C++不會編譯頭類的變化

我的項目中包含一些類,我正在深化發展,我不包括預編譯頭stdafx .h,因爲它們還沒有完成(編輯它們包含在main.cpp文件中,在stdafx.h之後)

當我對具有.h和.cpp文件的類進行更改時,更改是正確應用。

當我在只有.h文件的類中進行更改時,VC2008會檢測那裏的錯誤,但如果一切正常,它將運行該程序並且不更新該類。一個證明是,如果我在類的某個地方設置了一個斷點,它不會停在那裏,斷點會出現一條警告,指出「沒有與此行關聯的可執行代碼」。

編輯我試圖在stdafx.h中包含頭文件,行爲是相同的:沒有應用更改。

我現在正在做的是在再次運行之前清理項目。如果我忘記清理,有時候我會浪費很多時間,因爲我必須通過大的流程來達到並測試更改,然後我看到我無法進行調試,必須停止,清理,運行並達到更改!

任何解決方案不必一次又一次地清理項目?

+0

您無法調試未包含在當前正在運行的可執行文件中的代碼。當你說VS2008檢測到錯誤時,你的意思是intellisense檢測錯誤?如果編譯器在你沒有包含在項目中的代碼給你提供錯誤,我會覺得很奇怪。 –

+0

確實包含了代碼,因爲我到達了斷點並且文件的代碼正在運行。當我說VS2008檢測錯誤時,我的意思是在編譯時 – Miquel

回答

0

只是爲了好奇,我在這個問題上更加深入。非常奇怪的行爲:

當只有在一個私有類成員函數中從一個包含在stdafx.h(預編譯)中的沒有.cpp文件的頭文件類中進行更改時,編譯器將不會應用更改!

如果在構造函數,公共方法,變量或子結構/類定義中進行更改,則不適用。

如果這對某人有意義,這將是一個很好的清晰解釋。

相關問題