18

<windows.h>小文字と大文字の<Windows.h>ヘッダーの違いは何ですか? Win32 プログラミングに関するいくつかの古いチュートリアルを読んでいますが、それらはすべて小文字の「w」を使用しています。コードは正常にコンパイルされますが、VS 2012 のオートコンプリート機能では<Windows.h>ヘッダーのみが一覧表示されます。

4

3 に答える 3

21

Windows のファイル システムは大文字と小文字を区別しないため、Windows でコンパイルする場合はどちらでも機能します。ただし、たとえば MinGW クロス コンパイラを使用して Linux でコンパイルする場合は、大文字と小文字が区別されます。

MinGWwindows.hヘッダーは常に小文字のようです。

MicrosoftのWindows.hツールで提供されるファイルは、さまざまなケースを使用しています。

  • 古い VC++ インストール (VC++98 以前) がインストールされているように見えるWINDOWS.H- すべて大文字
  • 新しいVC++のインストールとWindows SDKは使用しているようですWindows.h
  • 一部のモバイル デバイス SDK (PocketPC または Windows モバイル) ではwindows.h、すべて小文字が使用されます。

windows.hWindows と Linux のクロス コンパイルの両方で常に動作するため、考えたことがある場合は使用し#include <windows.h>ます。これに答えるまで、私はこれを思い出せません。

私はこれについてあまり心配しません。大文字の形式が Linux MinGW ビルドに組み込まれている場合でも、簡単な (面倒かもしれませんが) 修正方法は、Windows.h向きを変えて を含むファイルを作成することですwindows.h

于 2013-03-17T22:21:43.517 に答える
15

Windows(NTFS)のファイル名は大文字と小文字を区別しないため、違いはありません。


実際には、Filenames are Case Sensitive on NTFS Volumesによると、 NTFS には 2 つの異なるモードがあり、1 つは大文字と小文字が区別されます。

NTFS は、NTFS と対話するアプリケーションのサブシステムによって選択できる、わずかに異なる 2 つの操作モードをサポートしています。1 つ目は大文字と小文字が完全に区別され、ディスク上のファイルを選択する場合は、アプリケーションによって提供されるファイル名が、大文字と小文字を含めてディスクに保存されている名前と一致する必要があります。操作の 2 番目のモードは、大文字と小文字を区別しませんが、大文字と小文字を区別しません。これは、指定された名前がディスクに保存されている名前と大文字と小文字が異なる場合でも、アプリケーションはディスク上のファイルを選択できることを意味します。どちらのモードでも、ファイルの作成に使用された大文字と小文字が保持されることに注意してください。ここで説明する動作の違いは、アプリケーションが既存のファイルを見つける必要がある場合にのみ適用されます。POSIX は大文字と小文字を完全に区別するモードを利用しますが、MS-DOS、WOW、および Win32 サブシステムは大文字と小文字を区別しないモードを使用します。

于 2013-03-17T21:48:58.310 に答える
3

これらは、Windowsファイルシステムが大文字と小文字を区別しないのとまったく同じファイルです

于 2013-03-17T21:48:34.400 に答える