2013-03-17 13 views
5

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

+0

これらはまったく同じものです。 –

+0

私はこの質問が好きです。通常はこれを尋ねるのではなく、それはあなたが 'w'または' W'で書くかのどちらかのためです。 – MahanGM

答えて

12

違いはありません、ともWindows上のファイル名(NTFS)は大文字と小文字が区別されないようがあるかもしれませんです。


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

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

+0

はい、私はLinuxが大文字と小文字を区別したファイル名を持っていることを思い出しました。 – balky

2

これらは非常に同じファイルをWindowsファイルシステムですが、大文字小文字を区別しない

7

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

ヘッダーは常に小文字であるようです。

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

  • 古いVC++のインストール(VC++ 98およびそれ以前)はインストールするために見える - すべてのキャップを
  • VC++のインストールとWindowsのSDKがWindows.h
  • 一部のモバイルデバイス用のSDK(ポケットPCまたはWindowsモバイル)を使用するように見える新しいですwindows.h(すべて小文字)を使用してください。

windows.hは常に、WindowsとLinuxのクロスコンパイルの両方で動作しますので、私が今までそれについて考えた場合、私は#include <windows.h>を使用すると思います。私はこれに答えるまでやり直すことはできません。

私はこれについてあまり心配しません。たとえ大文字の書式がLinux MinGWビルドに向いていても、(おそらく厄介な)簡単な修正はwindows.hを含む、Windows.hファイルを作成することです。

+2

またはシンボリックリンク... –

+1

@R .:はい - Windows中心の考え方が表示されます。 –

関連する問題