Какие части C ++ не поддерживаются / не поддерживаются в Brew (MP)? - PullRequest
3 голосов
/ 05 января 2011

Привет. Я пытаюсь выяснить, что можно и что нельзя сделать с помощью C ++ на BrewMP.

Имеет ли кто-нибудь из первых рук опыт использования C ++ с Brew, в частности BrewMP, и может сказать, удалось ли им заставить эти вещи работать на устройстве без особых хлопот:статические переменные / функции

шаблоны исключения приведение и т. д.

Ответы [ 2 ]

2 голосов
/ 10 января 2011
  1. До этого в Brew3.X глобальные и статические переменные не поддерживались. Однако в Brew MP есть инструмент ELF2MOD. При этом вы можете использовать глобальные и статические переменные.
    Смотрите путь к SDK, например:
    C: \ Program Files \ Qualcomm \ Brew MP SDK \ Toolset 7.10 Rev 10.0.1489821 \ bin

    Если ваши глобальные или статические данные не POD (объект C ++, который должен вызывать конструктор класса C ++), пожалуйста, не используйте его. Увидеть https://developer.brewmp.com/forum/using-static-variables-classes-0

  2. Стандартная библиотека C (stdc lib или среда выполнения c) абсолютно запрещена в BrewMP, например memset и sprintf . Причина. В модуле общего процесса с записью main () компоненты среды выполнения C уже автоматически инициализируются перед вызовом их пользовательским кодом. Файлы BrewMP mod (mod1) динамически загружаются и связываются. Нет подходящего времени для вызова инициализации, и эти моды не должны вызывать инициализацию среды выполнения C индивидуально.

  3. Функции шаблонов C ++ и классы шаблонов: создание экземпляров кода шаблона генерируется во время компиляции и не требует инициализации кода во время загрузки и во время выполнения. Они могут безопасно использоваться в устройстве.

  4. C ++ Исключения: я не проверял это. В параметрах компилятора ARM по умолчанию исключение не включено. И исключения требуют включения RTTI в C ++.

  5. C ++ cast: dynamic_cast - большая проблема, потому что ему требуется поддержка идентификации типов во время выполнения и проверка типов во время выполнения. Другие приведения, такие как static_cast, reinterpret_cast и const_cast, являются лишь подсказкой для проверки компилятором во время компиляции.

1 голос
/ 09 января 2011

Были проблемы с:

  • Виртуальные или абстрактные методы
  • Поддержка статических и глобальных переменных
  • Статическая инициализация глобальной объекты

Большинство из них можно решить с помощью пользовательского post-linker . У меня это работало нормально, надеюсь, оно подходит и вам.

...