小写的windows.h和大写的Windows.h有什么区别?

时间:2013-03-17 21:46:05

标签: c winapi

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

3 个答案:

答案 0 :(得分:13)

没有区别,也不存在Windows上的文件名(NTFS)不区分大小写。


实际上,根据Filenames are Case Sensitive on NTFS Volumes,NTFS有两种不同的模式,其中一种是区分大小写的:

  

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

答案 1 :(得分:11)

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

MinGW windows.h标题似乎总是小写。

Microsoft工具提供的Windows.h文件使用了各种案例。

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

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

我不会太担心这个。即使大写形式进入Linux MinGW构建,一个简单(如果可能很烦人)的修复就是创建一个只转过来并包含Windows.h的{​​{1}}文件。

答案 2 :(得分:3)

这些是同一个文件,Windows文件系统不区分大小写