2014-06-19 62 views
0

我一直認爲我必須在項目中的每個頭文件的頂部包含#include "Stdafx.h"行,就像它在描述中所述。我已經在wizzard的幫助下創建了簡單的基於MFC對話框的應用程序,並發現頭文件不包含#include "Stdafx.h"行,但是cpp擁有它們。所以,當我必須在cpp中使用#include "Stdafx.h"行,並且在h時使用#include "Stdafx.h"行嗎?在cpp文件中使用#include「Stdafx.h」

+1

'stdafx.h'用於具有預編譯頭文件的項目。當你需要預編譯頭文件時使用它。 – ghostofstandardspast

回答

3

簡短回答:在.h:從不;在.cpp當且僅當它配置了預編譯頭(默認情況下)。

基本原理是#include "stdafx.h"用於包含預編譯頭文件(編譯時編譯爲stdafx.cpp)。爲了使它們有效,它們必須是編譯單元的第一行(不包括空格或註釋)。而第一行不能在頭文件中,因爲包含它的#include是第一個!

0

我建議只在cpp文件中使用#include「stdafx.h」,因爲你可能想用'預編譯頭文件來編譯一個cpp',而不用'預編譯頭文件來編譯另一個cpp'。

此外,當您使用DevStudio的嚮導創建項目時,這些stdafx.h includes將位於cpp文件中。