编译器为什么要自带API

发布时间:2024-05-11 16:02 发布:上海旅游网

问题描述:

我知道API是WINDOWS自带的,而且是标准的不是随意可以增加的;

1.那么为什么编译器例如VC,VB,JAVA,MASM32都自带API?

2.如果不是WINDOWS自带的能叫API吗?

3.编译出来的目标代码会含有API,还是不含API而直接调用运行时所在机器上WINDOWS自带的API?

不反对你罗列资料,但是更希望得到针对我问题的解答,谢谢;
有没有不自带API,编程中只使用WINDOWS的API的编译器(任何语言)?

问题解答:

API 是很宽泛的概念。
基本上来说,只要在 Windows 平台上的程序,都要直接或间接地调用 Windows API。
API 作为软件系统的编程接口,可以以库或其他各种方式出现。
而 API 的主要作用是把软件系统的功能暴露出来。类似 Windows API 这样的操作系统 API,是提供操作系统整个功能集合的最重要途径。操作系统 API 提供在这个操作系统上与任何东西互操作的能力:文件、内存、时钟、网络、图形、各种外设等等。API 通常还提供许多工具类的功能:操纵字符串、各种数据类型、时间日期等等。世界上最通用的操作系统 API 其实是传统 Unix 的 POSIX 接口(可移植操作系统接口),标准 C 的标准库其实就是这个接口的子集,所有类 Unix 操作系统所提供的操作系统 API,几乎都被称为 libc(对 C 库的传统称呼),所有操作系统所提供的自然操作系统接口都是以 C 语言执行库的方式提供的。Windows 操作系统上提供的 Windows API 与 POSIX 不同,但也是 C 函数库。另一方面,操作系统 API 通常还会保证二进制兼容性,即该系统的标准接口函数的调用地址通常保持不变,这使得通过汇编语言调用 API 方便了不少。
除了操作系统之外,又一定规模又希望进行二次开发的软件系统通常也提供其自己形式的 API。有的系统自己定义了语言,通常就提供该种语言的编程接口,而大多数一般也提供标准 C 编程接口 API。甚至有些网络分布式软件还提供 URI 远程访问形式的 API。
以提供编程能力为目的的编程语言和系统,几乎都要提供该语言特定的一组运行库,而这个运行库通常是以各种形式对底层操作系统 API 进行的封装,还有一些运行库是自己实现了一些功能并通过 API 暴露出来。VC 传统提供了 MFC、ATL 等类库,MFC 就是把 Windows API 的主要功能进行 C++ 封装的结果,而 VB 的库中除了对 Windows API 的封装之外还包括对 VB 程序十分必要的运行时组件,Java 库是独立于平台的字节码类库,但其中与底层机器交互的部分一般都是对其所在操作系统 API 的封装。

API是应用软件接口
是操作系统提供给应用程序的接口
编程里面的API函数是给我用来操作操作系统给我们服务的指令
windows里面API 是提供给我用的指令
两给说的都是一个东西
编译器的API其实就是调用系统API的函数而已 两者是不冲突的

API和Windows API是2个概念
API是应用程序编程接口,而Windows API才是系统的API

为什么编译器例如VC,VB,JAVA,MASM32都自带API?
每个编译器都需要有自己的库,这里库对应着自己的API

不是WINDOWS自带的能叫API吗
当然,WIN自己的API是API,程序语言编译器的API就不是API了么?不像话

编译出来的目标代码会含有API,还是不含API而直接调用运行时所在机器上WINDOWS自带的API?
程序中用到自己的API那就点用自己的API,如果调用了系统API,那当然就是运行系统的API了

热点新闻