我应该在什么条件下选择io.h到windows.h?

时间:2013-11-18 15:33:05

标签: c++ windows system

我正在开发一个与Windows上的系统编程相关的项目。为此,我被指向windows.h。现在我遇到了io.h。它们之间究竟有什么区别?

例如,由于我正在移植已部署在Linux上的应用程序,因此文件打开功能为open,而在Windows上,如果我使用windows.h,则文件打开功能将为{ {3}},如果我使用io.h,则为CreateFile

3 个答案:

答案 0 :(得分:8)

io.h最初提供了对Unix中低级I / O原语及相关常量等的声明的访问。由于相当多的代码依赖于它,其他系统的许多(大多数?)编译器提供了一个相同名称的头文件,以及一些与Unix中的函数一样工作的库函数(至少大部分)。

Windows.h是(一种)Windows的粗略模拟 - 一个标题,可以访问(声明)Windows的函数,常量等。最大的区别在于,Windows.h比io.h涵盖的基本低级I / O更多,而不是涵盖所有GUI功能等。

所以:如果你想编写在类Unix系统上以相当低的水平执行I / O的代码,并且也可以移植到其他系统,如Windows,你可能想要使用io.h。如果你想专门为Windows做系统编程,你几乎肯定想要使用windows.h

答案 1 :(得分:4)

最终,Windows上所有这些不同的I / O函数都映射到Win32 API的调用(例如,CreateFile以解决您的特定问题)。因此,如果您想直接使用此API,请选择windows.h。如果要使用各种(兼容性)包装器,无论是标准C ++库,标准IO库,POSIX子系统等等,那么您可以使用其他包含文件。

答案 2 :(得分:4)

如果您正在尝试编写可移植代码,则可以使用stdio.h

Windows.h包含创建Windows应用程序所需的所有标头(所有基本的Win32 API标头和预处理器指令)。如果你只是想读/写文件,并希望以便携方式这样做,那就不是你要选择的头文件。