2013-03-17 100 views
5

小寫字母<windows.h>和大寫字母<Windows.h>的區別是什麼?我正在閱讀一些Win32編程的老教程,他們都使用小寫'w'。代碼編譯良好,但VS 2012自動完成功能僅列出<Windows.h>標題。小寫windows.h和大寫windows.h的區別?

+0

他們是完全一樣的東西。 – 2013-03-17 21:48:59

+0

我有點像這個問題,因爲你通常不會問這個,這是你寫'W'或'W'的方式。 – MahanGM 2013-03-17 21:55:31

回答

12

沒有區別,而且也不可能有像在Windows文件名(NTFS)不區分大小寫。


實際上,根據Filenames are Case Sensitive on NTFS Volumes NTFS有兩種不同的模式,其中一個是大小寫敏感的:

NTFS支持兩種稍微不同的操作模式,可以由應用程序的使用NTFS交互的子系統來選擇。第一種是完全區分大小寫的,並要求應用程序提供的文件名與存儲在磁盤上的名稱相匹配,包括如果要選擇磁盤上的文件時的情況。第二種操作模式是案例保留但不區分大小寫。這意味着即使提供的名稱與存儲在磁盤上的名稱不同,應用程序也可以選擇磁盤上的文件。請注意,這兩種模式保留用於創建文件的情況。這裏指出的行爲差異僅適用於應用程序需要查找現有文件的情況。 POSIX利用完整的大小寫敏感模式,而MS-DOS,WOW和Win32子系統使用大小寫不敏感模式。

+0

是的,現在我記得,Linux有大小寫敏感的文件名,Windows沒有 – balky 2013-03-17 21:55:41

2

這些都是在同一個文件Windows文件系統不區分大小寫

7

Windows上的文件系統不區分大小寫,因此在Windows上編譯時都可以工作。但是,如果您要在Linux上使用MinGW交叉編譯器進行編譯,則該情況很重要。

MinGW windows.h標題似乎總是小寫。

與微軟工具一起提供的Windows.h文件已經使用了各種情況。

  • 老VC++安裝(VC++ 98和早期)出現安裝 - 全部大寫
  • 新VC++的安裝和Windows軟件開發工具包似乎使用Windows.h
  • 一些移動設備軟件開發工具包(掌上電腦或Windows Mobile)使用windows.h - 全部小寫。

由於windows.h將始終在Windows和Linux的交叉編譯的工作,我會使用#include <windows.h>,如果我曾經想過這個問題。在回答這個問題之前我不記得這些。

我不會擔心這個太多。即使大寫形式找到Linux MinGW構建版本,一個簡單的(如果可能是惱人的)修補程序是創建一個Windows.h文件,該文件只是轉過身來包含windows.h

+2

或符號鏈接... – 2013-03-17 23:41:34

+1

@R .:是的 - 我以Windows爲中心思考。 – 2013-03-18 00:14:00