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

时间:2011-06-16 03:22:08

标签: c++ static-libraries

诸如boost,STL,ACE(通常在namespace std中包含内容)等库包含任何特殊类型的编码技术,这些技术无法被通常编码/使用程序员?

从更广泛的意义上讲,它们是否利用了任何编译器或实现特定的实用程序,而这些实用程序并未向一般程序员公开?

3 个答案:

答案 0 :(得分:1)

STL(和其他)用'纯C ++'编写。有关非常类似的问题,请参阅here

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

C ++ 0x STL还使用一些编译器魔术来使一些新的语言功能起作用。

答案 1 :(得分:1)

这些都是用每个人都可以使用的相同代码编写的。但是,代码通常很难阅读(至少对我而言),因为他们竭尽全力确保库的通用性。 Here是STL的sgi实现。浏览并自己查看。

答案 2 :(得分:1)

由于标准库是C ++规范的一部分,因此您的问题并不充分。

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

底线是规范没有将标准库与其他语言分开。它只是该语言的一部分,其设施可供“常规程序员”使用。

Boost主要使用标准C ++编写,但是当它们可以提高性能时,它们确实利用了特定于平台的功能,并且它们偶尔需要依赖于编译器的功能扩展。文档通常会提及何时在所有平台上都没有该功能。

我不了解ACE。