【问题标题】:How are APIs made? [closed]API是如何制作的? [关闭]
【发布时间】:2014-12-26 18:35:55
【问题描述】:

其实我是在问,如何使用 C++ 从头开始​​制作像 SFML 这样的库?

我错误地将 误认为是 API

我无意中重复了这个问题,这是它的链接:

How create a library?

【问题讨论】:

  • API 是自动化系统可以用来与您的系统交互的任何接口。这是一个非常广泛和开放的概念。有些 API 是 Web 服务,有些是系统调用,有些是数据库写入,有些是文件写入等。您设计的任何允许另一个应用程序与您的应用程序交互的东西都是 API。
  • 这是一个有效的问题 - 人们可能不了解 C++ 中 API 的概念,尤其是它的语用学。
  • 恐怕你不明白我的意思。我已经学习了 C++ 的基础知识,但它仅限于控制台,我想将我的知识扩展到 GUI 和游戏,所以我会使用一些像 SFML 这样的 API。我知道它是用 C++ 编写的。我怎么能,我不打算做,只是为了理解,用我学过的 c++ 做一个类似的。
  • @OMarElgazzar 这与创建 API 有什么关系? API 是 Application 的 Programming Ininterface。您的意思是操作系统如何实现其 API?
  • 它是用 C 或 C++ 编写的,但它使用了一些在 C++11 中未标准化的操作系统特定 API(但在其他地方,例如 POSIX 或 Linux)

标签: c++ api


【解决方案1】:

实际上,API 只是一些现有(参考或示例)实现的记录接口。

理论上,可以抽象地设计一个 API。实际上,在没有任何实现的情况下这样做是一个代价高昂的错误(因为没有实现会有很多你不会考虑的细节)。

另请阅读undefined behavior

请注意,纯标准 C++11 并没有提供太多与外界交互的内容:C++11 标准不了解目录、键盘、鼠标、屏幕、声音、网络、GUI 等。您的操作系统可能有更多相关的其他特定库。了解更多关于 POSIX 的信息,它可以理解为操作系统服务的 standardized API(遗憾的是,MicroSoft 销售的一些专有操作系统本机不兼容 POSIX;有传言说您可能会购买一些 POSIX - 类似于他们的 Windows 操作系统的界面,有自己的Windows API)。

如果你想实现一些东西,你需要了解目标平台,即你想要支持的操作系统。对于 Linux,开始阅读Advanced Linux Programmingintro(2)syscalls(2)intro(3) 等...并详细研究与您相关的free software 实现的源代码(参见例如sourceforge ...)目标。

如果您想跨平台(例如,能够在 Linux 和 MacOSX 上编译相同的代码),请更好地使用和利用现有的跨平台框架,如 QtPOCO,或者(如果他们与您的需求相关)libsdlSFML。这些框架使用一些特定于操作系统的 API(并尝试在它们之上定义一些通用抽象)。

PS。在实践中,设计一个好的 API 是一门困难的艺术。很好地记录它是必不可少的。如果可能的话,让你的实现成为免费软件,并尝试获得有关它的建议和帮助。

【讨论】:

    猜你喜欢
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    相关资源
    最近更新 更多