诸如boost,STL,ACE(通常在namespace std
中包含内容)等库包含任何特殊类型的编码技术,这些技术无法被通常编码/使用程序员?
从更广泛的意义上讲,它们是否利用了任何编译器或实现特定的实用程序,而这些实用程序并未向一般程序员公开?
答案 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。