#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. Отлично сработало.