是否忘記了向源中添加“#include "StdAfx.h"”?


錯誤分析

此錯誤發生的原因是編譯器在尋找預編譯指示頭文件(默認#include "stdafx.h")時,文件未預期結束。沒有找到預編譯指示信息的頭文件"stdafx.h"

解決方式

方法一

  1. 在解決方案資源管理器中,右擊相應的.cpp文件,點擊“屬性”
  2. 在左側配置屬性中,點開“C/C++”,單擊“預編譯頭”
  3. 更改右側第一行的“創建/使用預編譯頭”,把選項從“使用預編譯頭(/Yu)”改成“不使用預編譯頭”

方法二(不推薦)

1)在解決方案右擊工程,點擊屬性
2)在配置屬性 -> c/c++ -> 預編譯頭 中 將 “使用預編譯頭(/YU)” 改為 “不適用預編譯頭”,這種做法會使每次編譯過程非常緩慢

方法三

直接在.cpp頭文件上include stdafx.h。但是這種修改會破壞代碼的標准性。

概念

預編譯

就是編譯器首先編譯某個文件(稱為預編譯頭文件),然后將這個編譯結果保存起來,之后如果有其他源文件include了這個“預編譯頭文件”的時候,則自動從這個編譯結果提取需要的信息進行編譯。

預編譯結果文件(Precompiled header file)

就是那個用來保存已經編譯了的符號信息的文件(.PCH作為后綴)

生成預編譯結果文件(Create Precompiled header file)

我們說源文件A通過文件B“生成預編譯結果文件”是指編譯A的時候將其中編譯B的編譯結果保存成預編譯結果文件。一般使用向導的話,A文件就是“stdafx.cpp”,B文件是“stdafx.h”。stdafx.cpp中就一行語句:#include “stdafx.h”

使用預編譯頭(Using precompiled header)

我們說某個源文件(a.cpp)通過“stdafx.h”來使用預編譯結果是指編譯a.cpp的時候,如果a.cpp第一行include語句是#include “stdafx.h”的話,那么直接取預編譯結果文件的結果,不再重新編譯”stdafx.h”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM