簡體   English   中英

我的Visual C ++編譯器編譯過時的源代碼

[英]My Visual C++ compiler compiles out of date source

我是初學者,開始使用Microsoft Visual C ++ Express 2010進行Windows編程。 我使用本機代碼創建了一個新的C ++應用程序,而不是托管或MFC。 我讓Visual Studio為我創建了基本的Windows代碼來創建一個帶有簡單菜單的窗口(chat.cpp)。 我修改了這個文件,我能夠正確編譯並看到我的更改生效。

現在我又向解決方案(intro.cpp)添加了一個源文件,我將其包含在我的標題中並從chat.cpp中調用。 這似乎工作得很好,但有一個問題。 編譯器似乎偶爾不會應用我的代碼更改:我進行了各種編輯,重新編譯,並且“舊”代碼似乎正在運行。 然后,過了一段時間,在我做了一個小小的修改后,編譯器似乎“趕上”並運行新代碼,包括我以前所做的所有更改。

有某種緩存嗎? 我是否需要告訴編譯器要編譯哪些文件以及哪些文件只能從目標文件鏈接? 將文件添加到解決方案時,我是否犯了錯誤?

intro.cpp有頭文件嗎? 在你的解決方案中也是這樣嗎?

我很難想象這個成熟IDE的這個區域有一個bug,所以我先檢查一下你的文件列表。 確保解決方案資源管理器顯示您已添加並正在編輯的所有文件。 這是VS用於確定重建的列表。

編輯:我承認我從你的描述中不清楚為什么它現在會失敗。 但是,通常頭文件不包含代碼,它以相反的方式工作(類模板頭文件除外,例如STL頭)。 有一個關於利弊一些討論在這里 對我來說最有說服力的論點是支持包括頭文件而不是反之亦然的代碼,因為頭文件包含接口 ,而代碼文件包含實現

我會嘗試將您的代碼重構為一個更傳統的結構,其中intro.cpp包含intro.h以及它需要的任何其他內容,以及chat.cpp也是如此。 然后你的編譯單元是intro.cpp和chat.cpp,它們依賴於相關的頭文件,所以只要它們在SOlution Explorer中正確列出,一切都應該有效。 您可以清理構建依賴項以避免重復,並在您按照自己的意願工作后減少構建時間。

暫無
暫無

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

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