2017-08-17 75 views
4

我在VS2010中開發,希望將代碼添加到已經存在的項目中。順便說一句,這是一個Win32/MFC。#include「MyClass.h」和#include「。 myclass.h」有什麼區別?

我不禁注意到,在MyClass類(在這種情況下MyClass的是CDialog類的擴展)以下被列入在cpp文件的頂部:

#include "MyClass.h" 
#include ".\myclass.h" 

我注意到第二個包含是沒有大寫的輸入,但我不明白爲什麼?

+0

Windows文件名不區分大小寫。名稱「MyClass.h」和「myclass.h」是相同的。 –

回答

1

MyClass.h」 將在您的項目設置中定義的INCLUDE_DIR路徑上搜索。

將在與當前文件相同的目錄中搜索「./myclass.h」。

Windows文件名不區分大小寫,所以如果您的工作目錄位於包含路徑中,這些行指向同一個文件。

這種冗餘可能是爲VS的方式,以確保該文件將被包含至少一次...

編輯:感謝阿恩沃格爾,我累了,寫了假的東西。 您的編譯器只會查找您的頭文件如果文件名是#include <file.h> 但我想冗餘是要符合所有文件系統。

+0

不正確,請參閱https://msdn.microsoft.com/en-us/library/36k2cdd4.aspx –

+0

糟糕!你完全正確,我很累......對不起,我編輯了我的帖子。謝謝 ! – Caesar

+0

我的意思是文檔中提到的「。\ something.h」和「something.h」沒有區別。引號和尖括號只有區別。細節是實現定義的,甚至取決於您所建議的操作系統。 –

0

.\說要在當前目錄中查找。我在與頭部的包括衛兵猜測,這不會是一個問題。

0

#include "MyClass.h"是來自環境路徑,而#include ".\myclass.h"來自當前路徑。

大多數時候,「MyClass.h」在你項目的inc目錄下,但是你的MyClass.cpp在其他路徑下。

相關問題