Есть ли ограничения при использовании C STL для разработки iOS?

#c #objective-c #ios #compiler-construction #cross-platform

#c #objective-c #iOS #компилятор-конструирование #кроссплатформенность

Вопрос:

Моя цель — повторно использовать некоторую реализацию C STL для разработки iOS со статической библиотекой.

Как мы знаем, устройства iOS основаны на семействе ARM6 / 7, которое отличается от семейства * 86 некоторыми параметрами компилятора.

Для мобильной разработки мы предпочитаем повторно использовать некоторые коды C на разных платформах, таких как iOS, Android и даже для серверной части ПК.

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

Спасибо


C STL просто ссылается на какую-то популярную версию, я не хочу охватывать все библиотеки STL, я просто хочу знать некоторые популярные проблемы для этого случая. Спасибо, что указали на это.

Комментарии:

1. Когда вы говорите «некоторая реализация STL», вы имеете в виду «любую реализацию STL» или «одну конкретную реализацию STL»? Потому что, AFAIK, STL, который поставляется с Xcode, отлично работает с iDevices. Пока вы сами не создадите ассемблерный код, я не вижу, что могло бы не сработать.

Ответ №1:

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

Реализация стандартной библиотеки на iOS такая же, как и на Mac OS. Разницы быть не должно.

ARM vs x86 не должны иметь никакого значения. Часть стандартной библиотеки C , называемая STL, полностью состоит из шаблонов, отсюда и название «Стандартная библиотека шаблонов«. Создание шаблонов поверх высокоуровневых структур данных практически исключает приемы языка ассемблера.

Комментарии:

1. Единственное предостережение заключается в том, что вы должны быть уверены в том, что переход от коллекций STL к коллекциям Cocoa выполняется корректно, когда такие переходы должны произойти. Как бы глупо это ни звучало, я видел несколько примеров, когда люди пытались внедрить STL в области Cocoa, где ему не место, создавая больше работы, чем необходимо, и в итоге получая продукт более низкого качества.

Ответ №2:

Нет — когда я работал на моего предыдущего работодателя, мы использовали целый стек протоколов (с некоторым количеством STL), написанный на C для нашего настольного клиента, для начальной разработки нашего клиента для iPhone. Отлично сработало.