18

<windows.h>小写和大写<Windows.h>标题有什么区别?我正在阅读一些关于 Win32 编程的旧教程,它们都使用小写的“w”。代码编译良好,但 VS 2012 自动完成功能仅列出<Windows.h>标题。

4

3 回答 3

21

Windows 上的文件系统不区分大小写,因此在 Windows 上编译时任何一个都可以工作。但是,例如,如果您要在 Linux 上使用 MinGW 交叉编译器进行编译,则情况很重要。

MinGWwindows.h标头似乎总是小写。

Windows.h微软工具提供的文件已经使用了多种案例。

  • 旧的 VC++ 安装(VC++98 和更早版本)似乎可以安装WINDOWS.H- 全部大写
  • 较新的 VC++ 安装和 Windows SDK 似乎使用Windows.h
  • 一些移动设备 SDK(PocketPC 或 Windows mobile)使用windows.h- 全部小写。

由于windows.h将始终在 Windows 和 Linux 交叉编译上工作,#include <windows.h>如果我考虑过,我会使用它。在回答这个问题之前,我不记得做了什么。

I wouldn't worry about this too much. Even if the capitalized form finds its way onto a Linux MinGW build, an easy (if maybe annoying) fix is to create a Windows.h file that just turns around and includes windows.h.

于 2013-03-17T22:21:43.517 回答
15

没有区别,也不可能因为 Windows (NTFS) 上的文件名不区分大小写。


实际上,根据文件名在 NTFS 卷上区分大小写,NTFS 有两种不同的模式,其中一种区分大小写:

NTFS 支持两种略有不同的操作模式,可以由与 NTFS 交互的应用程序的子系统选择。第一个是完全区分大小写的,如果要选择磁盘上的文件,则要求应用程序提供的文件名与存储在磁盘上的名称匹配,包括大小写。第二种操作模式是保留大小写但不区分大小写。这意味着即使提供的名称与存储在磁盘上的名称不同,应用程序也可以选择磁盘上的文件。请注意,两种模式都会保留用于创建文件的大小写。此处提到的行为差异仅适用于应用程序需要定位现有文件的情况。POSIX 利用完全区分大小写模式,而 MS-DOS、WOW 和 Win32 子系统使用不区分大小写模式。

于 2013-03-17T21:48:58.310 回答
3

这些是完全相同的文件 Windows 文件系统不区分大小写

于 2013-03-17T21:48:34.400 回答