设为首页 加入收藏

TOP

1.5.1 API层次
2013-10-07 16:24:06 来源: 作者: 【 】 浏览:85
Tags:1.5.1 API 层次

1.5 API示例

API无处不在。即使你刚开始编程(www.cppentry.com)不久,也很可能已经使用一两个API编写过代码,或者自己编写过API。

1.5.1 API层次

API的大小任意,小至一个函数,大到由多个类组成的大集合。它也可以提供访问任意架构层面的功能,从底层的操作系统调用直到GUI工具包。下面列出了一些常见API,其中的很多你可能已经听说过,光看下面这些就可以看出API开发非常流行。

操作系统(OS)API。每一个操作系统都必须提供一系列的标准API,以允许程序员调用系统级服务。例如,POSIX API定义了诸如fork()、getpid()以及kill()函数管理Unix风格的进程。微软的Win32 API包括了诸如CreateProcess()、GetCurrentProcess()以及TerminateProcess()函数管理Windows进程。这些都是稳定的底层API,它们应该保持不变,否则可能会导致很多程序崩溃。

语言API。C语言提供了一个标准的API,它的实现就是libc库以及帮助手册页(man page),其中包含一些常见的功能,如printf()、scanf()和fopen()。C++(www.cppentry.com)语言同样提供了标准模板库(STL),它提供各种容器类型的API(如std::string、std::vector、std::set以及std::map)、迭代器(如std::vector::iterator)以及泛型算法(如std::sort、std::for_each以及std::set_union)。例如,下面的代码片段使用STL API迭代一个vector中的所有元素,并把它们打印出来。

图像API。开发人员必须自己编写图像读写功能的日子已经一去不复返,如今可以下载到大量的开源软件包并且可以在程序中使用它们。例如,流行的libjpeg库提供了JPEG/JFIF 编解码器的实现。存在大量的libtiff库用于读写各种风格的TIFF文件。libpng库用于处理PNG格式的图像。所有这些库都定义了读写图像格式的API,你可以编写代码调用它们而不需要知道文件格式背后的各种细节。例如,如下的代码片段使用libtiff API得到一个TIFF图像的尺寸。


3D图形API。两个经典的实时3D图形API是OpenGL和DirectX。它们允许你通过基础图元(如三角形或多边形)定义3D对象,指定这些基础图元的表面属性,如颜色、法线和纹理;定义环境条件,如灯、雾、裁剪平面。多亏这些标准API,游戏开发人员才能编写可以在各个厂家生产的新旧显卡上运行的3D游戏,因为各个显卡制造商发布的驱动都提供OpenGL或DirectX API的实现细节。在这些API普及之前,开发人员不得不为某种特定的图形硬件编写3D应用,且该程序不兼容其他装有不同图形硬件的机器。基于3D图形API,还衍生出一批更高级别的场景图形API,如OpenSceneGraph、OpenSG以及OGRE。下面的代码片段展示了一个典型案例,它使用OpenGL API渲染一个三角形,使其每个顶点的颜色不同:


图形用户界面API。任何使用窗口界面的应用都需要GUI工具包。利用此API能够创建窗口、按钮、文本框、对话框、图标、菜单等。此API通常还要提供一个事件模型,用以捕获鼠标和键盘事件。一些流行的C、C++(www.cppentry.com) GUI API包括wxWidgets库、诺基亚的Qt  API、GTK+以及X/Motif。过去,如果某个公司想要发布跨平台(如Windows和Mac)应用程序,他们必须在每个平台上使用不同的GUI API重新编写用户界面代码,或者在其内部开发跨平台的GUI工具包。然而,如今大部分现代GUI工具包都可以支持多个平台,包括Windows、Mac以及Linux,这就使得编写跨平台的应用程序变得更加简单。下面的程序代码是现代跨平台GUI API的示例,展示了一个最简单的Qt程序,它将弹出带"Hello World"按钮的窗口:

当然,这里列出的API只是现存的各类API的冰山一角。你还能找到通过网络访问数据库的API,解析并生成XML的API,帮助编写多线程程序的API,解决复杂数学问题的API。上述列举的API只是为了说明已经被开发出来的可以帮你构建应用程序的API的广度和深度,同时让你感受下基于这些API的代码看起来是什么样的。

提示

在现代软件开发中API无处不在,从OS、语言层面的API,到图像、声音、图形、并发、网络、XML、数学、Web浏览器以及GUI API。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.4 何时应当避免使用API 下一篇1.5.2 真实示例

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)