錯誤描述:fatal error C1010: 在查找預編譯頭時遇到意外的文件結尾。是否忘記了向源中添加“#include "stdafx.h"”?

錯誤描述:fatal error C1010: 在查找預編譯頭時遇到意外的文件結尾。是否忘記了向源中添加“#include "stdafx.h"”?
 

錯誤分析:

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

    (因爲工程中的每個cpp文件屬性默認都是使用預編譯頭(/YU)的,但是添加的第三方文件並沒有 #include "stdafx.h" 預編譯指示頭,所以編譯器在此cpp文件中一直到末尾都沒有找到它)

    我的這個問題發生於我通過添加文件的方式,向MFC內添加現有的一大坨.h和.cpp文件。這些.h和.cpp文件是屬於標準C++的開源源代碼範疇,與MFC無更深層次的關係。

解決方式:

1) 在解決方案資源管理器中,右擊相應的.cpp文件,點擊“屬性”

2) 在左側配置屬性中,點開“C/C++”,單擊“預編譯頭”

3) 更改右側第一行的“創建/使用預編譯頭”,把選項從“使用預編譯頭(/Yu)”改成“不使用預編譯頭”

一、概念:

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

2、預編譯結果文件(Precompiled header file):就是那個用來保存已經編譯了的符號信息的文件(.PCH作爲後綴)

3、生成預編譯結果文件(Create Precompiled header file):我們說源文件A通過文件B“生成預編譯結果文件”是指編譯A的時候將其中編譯B的編譯結果保存成預編譯結果文件。一般使用嚮導的話,A文件就是“stdafx.cpp”,B文件是“stdafx.h”。stdafx.cpp中就一行語句:

#include “stdafx.h”

4、使用預編譯頭(Using precompiled header):我們說某個源文件(a.cpp)通過“stdafx.h”來使用預編譯結果是指編譯a.cpp的時候,如果a.cpp第一行include語句是#include “stdafx.h”的話,那麼直接取預編譯結果文件的結果,不再重新編譯”stdafx.h”
https://blog.csdn.net/u011500419/article/details/72675022

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章