【发布时间】:2011-02-20 18:00:58
【问题描述】:
我有一个在 Windows 7 的 DOS Box 上运行的代码...但是我的问题是我的代码是否使用了 Windows API?下面是我正在使用的头文件...
#include<iostream.h>
#include<conio.h>
#include<dos.h>
#include<graphics.h>
#include<process.h>
【问题讨论】:
标签: windows
我有一个在 Windows 7 的 DOS Box 上运行的代码...但是我的问题是我的代码是否使用了 Windows API?下面是我正在使用的头文件...
#include<iostream.h>
#include<conio.h>
#include<dos.h>
#include<graphics.h>
#include<process.h>
【问题讨论】:
标签: windows
您为什么不看一下该代码?如果使用了任何 Windows 特定的 API,通过查看包含的头文件就不会太难找到它们。
DOSBox 可以运行 Windows 3.1 和相关程序,但如果您的程序在 Windows 3.1 之外运行,那么您可以确定没有使用任何 Windows API。
【讨论】:
dos.h 仅适用于 DOS,conio.h 在旧的 MS DOS 编译器中用于创建文本界面。这些头文件表明您的代码已经很老了,可能只能由较旧的编译器编译,比如 Turbo C。
windows.h 头文件,也没有 Windows 程序必须的 WinMain() 函数,如果你可以编译程序-> 这是您的程序中不存在 Windows API 的有力证据。
这些头文件不是 Windows API 的一部分,事实上,您的代码根本不可能使用 Borland Turbo C/C++ 以外的编译器进行编译。
看起来您主要使用的是专有的 Borland 库。例如,graphics.h 允许您在基于文本的 MS-DOS 环境中绘制图形。 Windows 下根本不支持。
即使是像conio.h 这样您可能会在其他编译器中找到的头文件也可能与您在代码中使用的头文件不兼容。 conio.h 声明的库函数因编译器而异。
作为一般规则,每个使用 Windows API 的程序都将包含windows.h,可能还有一些额外的子头文件,具体取决于所需的特定功能。
【讨论】:
到目前为止,您收到的大部分信息都过于笼统。包含的标题不会显示所有内容。
1) 使用的编译器将包含头文件behind-the-scenes
2) 链接的库仅松散耦合到您指定的标题
例子:
如果您使用 MinGW 并且不明确包含任何标头,它将在后台链接到 stdlib.h,这将在您不知道的情况下链接到 Windows API。
如果您随后调用 malloc(),它将由 mingw-Headers 转换为 HeapAlloc (Windows API),并明显链接到 Windows API。
【讨论】: