Содержат ли библиотеки общего назначения какой-либо код, который не может быть написан обычными пользователями? - PullRequest
0 голосов
/ 16 июня 2011

Есть ли в таких библиотеках, как boost, STL, ACE (которые часто делают включения в namespace std) какие-либо специальные методы кодирования , которые не могут быть закодированы / использованы обычным программистом?

В более широком смысле, используют ли они какие-либо утилиты для компилятора или реализации, которые не доступны для обычных программистов?

Ответы [ 3 ]

1 голос
/ 16 июня 2011

Все они написаны в одном и том же коде, доступном каждому.Тем не менее, код часто трудно прочитать (по крайней мере, для меня), потому что они идут на многое, чтобы обеспечить универсальность библиотек. Здесь - sgi-реализация STL.Просмотрите его и убедитесь сами.

1 голос
/ 16 июня 2011

Поскольку стандартная библиотека является частью спецификации C ++, ваш вопрос недостаточно обоснован.

Например, для реализации std::fstream (или, по крайней мере, std::filebuf) необходимо использовать OS-зависимые интерфейсы.Они считаются «утилитами, специфичными для реализации»?

Суть в том, что спецификация не отделяет стандартную библиотеку от остальной части языка.Это всего лишь часть языка, и его возможности доступны «обычным программистам».

Повышение в основном написано на стандартном C ++, но они используют преимущества платформенных функций, когда это может привести к повышению производительности.и им иногда нужны зависящие от компилятора расширения для функций.В документации обычно упоминается, когда функция доступна не на всех платформах.

Я не знаю о ACE.

1 голос
/ 16 июня 2011

STL (и другие) написаны на «чистом C ++».См. здесь для очень похожего вопроса.

C, с другой стороны, имеет много системных вызовов (unix / Windows / etc) в файлах стандартной библиотеки, чтобы все работало.

C ++ 0x STL также использует магию компилятора для работы некоторых новых языковых функций.

...