2013-03-17 476 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