Как кросс-платформа является стандартной библиотекой C ++?

Является ли стандартная библиотека C ++ (например, std :: string stream) доступной на iOS и Android (с использованием JNI / NDK)? Если так:

В какой степени это поддерживается? Каковы особенности рабочего стола, такие как консоль? Насколько это быстро / надежно? Сколько других мобильных платформ доступно? Могу ли я рассчитывать на то, что вам не придется модифицировать много кода с помощью библиотеки std при переносе на мобильные платформы (например, iOS)?

    Стандартная библиотека C ++ доступна для обоих. Кроме того, у iOS довольно долгое время был C ++ 11.

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

    Как следствие, очевидно, что вы не можете использовать консольный ввод-вывод для любого взаимодействия с вашим приложением – если только это не так, вы его создаете с использованием API интерфейса пользователя платформы.

    Что касается переносимости, на обеих платформах не должно быть никаких проблем – это библиотека GNU Std G ++ на Android и библиотека Clang C ++ на iOS. Переносимость – это не проблема для iOS, но, вероятно, вам понравится создание привязок JNI для Android.

    На самом деле, вы только сможете создавать back-end приложений на C ++. Все пользовательские интерфейсы будут явно не переносимыми и, как правило, должны быть реализованы на языке интерфейса пользовательского интерфейса.

    Windows Phone 8 позволяет использовать собственные приложения, а C ++, по-видимому, является языком выбора для их реализации. BlackBerry OS 10 – это фундаментальный QNX под капотом, который также совместим с POSIX.

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

    Обычно std lib очень эффективен, быстро и хорошо протестирован, поэтому он должен быть надежным.

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

    Предположим, что существует компилятор C ++, поддерживающий основные функции.

    Даже если это невозможно, вы всегда можете перенести требуемые функции std на эту конкретную платформу в качестве пользовательской библиотеки lib.

    Надеюсь это поможет,