C ++ Stdlib IO Подробности реализации - PullRequest
0 голосов
/ 24 мая 2011
  1. Существуют ли какие-либо гарантии того, что стандартный ввод-вывод C ++ будет переносимым на все настольные и мобильные ОС (мне интересны iOS и Android)?
  2. Отличается ли реализация стандартного ввода-вывода на разных платформах илиэто довольно равномерно?Если это не так, то происходит ли это из-за SDK платформы (другими словами - предоставляют ли SDK эти разные реализации)?
  3. Кто обеспечивает эту реализацию?Кто автор?Кто-нибудь обновляет их?
  4. Где находится документация?

Ответы [ 4 ]

3 голосов
/ 24 мая 2011

Я думаю, вы не видите возможности стандартных библиотек.Они предназначены для обеспечения общего набора функциональных возможностей, доступных для любого совместимого со стандартами компилятора.Например, если я напишу следующий код:

#include <iostream>

int main(int a, char** s)
{
  std::cout << "Hello World" << std::endl;
  return 0;
}

Это будет скомпилировано любым совместимым со стандартами компилятором.Вы зацикливаетесь на том, как работает std::cout на разных платформах по-разному - да, конечно.Но в этом вся прелесть - почему ты должен заботиться?В Windows, если вы скомпилируете это с помощью MS Visual C ++, этот компилятор будет иметь правильную реализацию (о которой не заботится стандарт) для поддержки вышеупомянутого стандартного способа записи в стандартный вывод.Аналогично, в Linux GCC будет иметь правильный код для записи в любую реализацию, а в Solaris CC будет делать то же самое.

Вам не нужно беспокоиться или откровенно беспокоиться.Обработка для вашей платформы обеспечивается компилятором, который вы используете для этой платформы.У вас есть хороший чистый высокоуровневый интерфейс для работы.

Вас волнует, как Java VM обрабатывает детали каждой платформы?Это не ваша забота, вы знаете, когда вы делаете System.out.println(), она будет записана на экран (или что-то еще для этой ВМ) соответствующим образом.Итак, почему вы зацикливаетесь на этом?

Что вы понимаете, так это то, будет ли компилятор, который вы используете на конкретной платформе, обеспечивать все функции стандартной библиотеки (т. Е. Полностью ли он соответствует стандартам илинет) а если нет, то чего не хватает и как обойти это.Остальное, откровенно говоря, не имеет значения!

А если вам это не нравится, хорошо заплатите за что-то вроде Roguewave - которое откровенно отнимает деньги, но это ваши деньги, чтобы разозлить ...

3 голосов
/ 24 мая 2011

Есть ли гарантии, что C ++ std IO будет переносимым на весь рабочий стол и мобильная ОС (мне интересна iOS и Android)?

Нет, нет никаких гарантий, что эти платформы будут реализованы, правильно, во всей стандартной библиотеке.

Отличается ли реализация стандартного ввода-вывода через платформы или это скорее равномерная? Если это отличается, то делает это произошло из-за SDK платформы (другими словами - SDK предоставляют эти разные реализации)?

Это другое. Ввод-вывод на разных платформах сильно отличается.

Кто обеспечивает эти реализации? Кто это автор? Кто-нибудь обновляет их? Где документация?

Их предоставляет либо разработчик компилятора, либо владелец платформы. Стандарт C ++ описывает, что должна делать библиотека.

2 голосов
/ 24 мая 2011

Стандартная библиотека это именно то - стандартная. Это определяется стандартом. Каждый компилятор, соответствующий стандарту, должен предоставить его. Таким образом, гарантия заключается в том, что он будет переносимым на все совместимые со стандартами реализации (вопрос о том, существует ли он для вашей целевой платформы - это совсем другой вопрос) Он не имеет ничего общего с SDK платформы (независимо от того, реализован ли он с использованием одного из них - наблюдаемое поведение должно быть таким же).

1 голос
/ 24 мая 2011

Идея стандарта (отсюда и стандарт) заключается в том, что его уважают и едины независимо от того, на какой платформе вы находитесь.Некоторые разработчики поставляют устройства с поддержкой всей или некоторых из библиотеки std, на самом деле только они сами решают, как она реализована.

Это зависит от платформы и, вероятно, доступно в документации SDK для каждой платформы, скорее всего, доступно сSDK или на сайте продавца.

...