小写<windows.h>
和大写<Windows.h>
标题有什么区别?我正在阅读一些关于Win32编程的旧教程,它们都使用小写的“w”。代码编译正常,但VS 2012自动完成功能仅列出<Windows.h>
标题。
答案 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
文件使用了各种案例。
WINDOWS.H
- 全部大写Windows.h
windows.h
- 全部小写。由于windows.h
将始终适用于Windows和Linux交叉编译,如果我曾考虑过,我会使用#include <windows.h>
。在回答这个问题之前我不记得这样做了。
我不会太担心这个。即使大写形式进入Linux MinGW构建,一个简单(如果可能很烦人)的修复就是创建一个只转过来并包含Windows.h
的{{1}}文件。
答案 2 :(得分:3)
这些是同一个文件,Windows文件系统不区分大小写