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

bal*_*lky 10 c winapi

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

hmj*_*mjd 13

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


实际上,根据Filenames对NTFS卷的区分大小写NTFS有两种不同的模式,其中一种是区分大小写的:

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


Mic*_*urr 12

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

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

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

  • 旧的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只是转身并包含的文件windows.h.


Shm*_*Cat 5

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