通用库是否包含任何普通用户无法编写的代码

Does general purpose libraries contain any code which cannot be written by normal users?

本文关键字:代码 用户 是否 包含任 何普通      更新时间:2023-10-16

boost、STL、ACE(通常包含在namespace std中)等库是否包含任何常规程序员无法编码/使用的特殊类型的编码技术

从更广泛的意义上讲,他们是否利用了任何编译器或特定于实现的实用程序,而这些实用程序并没有向普通程序员公开?

这些都是用相同的代码编写的,每个人都可以使用。然而,代码通常很难阅读(至少对我来说),因为它们花了很大的篇幅来确保库的通用性。以下是STL的sgi实现。浏览并亲自查看。

由于标准库是C++规范的一部分,因此您的问题没有充分的依据。

例如,std::fstream(或者至少std::filebuf)的实现必须使用依赖于操作系统的接口。这些算"特定于实施的实用程序"吗?

最重要的是,规范没有将标准库与语言的其他部分分开。它只是语言的一部分,"普通程序员"可以使用它的功能。

Boost大多是用标准C++编写的,但它们确实利用了特定于平台的功能,当这可以提高性能时,它们偶尔需要依赖编译器的功能扩展。文档通常会提到某个功能不是在所有平台上都可用。

我不知道ACE。

STL(和其他)是用"纯C++"编写的。请参阅此处了解一个非常相似的问题。

C、 另一方面,在其标准库文件中有许多系统调用(unix/Windows/etc),以使一切正常工作。

C++0x STL还使用了一些编译器魔法,使一些新的语言功能发挥作用。

相关文章: