2009-08-05 1 views
0

Я собираюсь написать библиотеку C++, которая будет использоваться как приложением Windows, так и на Symbian. Linux не является текущим требованием, но, как правило, также возможен.
По этой причине я хотел бы использовать соглашения об именах STL/Boost вместо Symbian's, которые, как мне кажется, трудно привыкнуть.
Это похоже на проблему при компиляции кода с помощью Carbide.C++, поскольку он обеспечивает соблюдение соглашения об именах Symbian.Как обойти соглашения об именах Symbian?

Как я могу использовать «обычные» имена и по-прежнему поддерживаю совместимость с Symbian? Я сначала подумал об условно #define -именование имен классов для платформы Symbian, но я боюсь, что это приведет к путанице.

Не могли бы возникнуть другие проблемы, не соблюдая соглашение об именах Symbian?

+1

Какие соглашения применяются? Если он заставляет имена классов начинаться с C, то это довольно поддельно, и если вы не можете его отключить, не используйте Carbide. Вам придется писать свои собственные файлы mmp, но это еще не конец света. Если это просто флаг, оставляющий функции, тогда это верно, ваш кросс-платформенный клиентский API не должен уходить, не так ли? Или это будет документировано, «эта функция выходит на Symbian, но выдает исключение в Windows»? Я думаю, что это плохая идея: просто предложите два интерфейса для вашей библиотеки, если поведение отличается. –

+0

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

ответ

4

Соглашения о кодировании не являются строгими. Они там, чтобы облегчить понимание кода для нас, людей. Если вы пишете многоплатформенную библиотеку, не стесняйтесь использовать все, что вам удобно.

Конечно, ваша библиотека, вероятно, должна каким-то образом взаимодействовать с базовой операционной системой. С помощью Open C/C++ libraries вы можете делать много вещей, не требуя использования собственных Symbian C++ API и их соглашений об именах.

В Carbide.C++ вы можете отключить статический анализ CodeScanner, поскольку он действительно полезен только для кода, написанного на родном Symbian C++.

Таким образом, в целом, проблемы заключаются в следующем:

  • Люди, приезжающие из родной Symbian C++ фона не сразу знакомы с конвенциями
  • Использование родной Symbian C API, ++ может раскрыть некоторые специфические для данной платформы особенности (исключения против листьев, ловушки, активные планировщики и т. д.)
  • Статические анализаторы, специфичные для Symbian, такие как CodeScanner, предполагают стиль кода Symbian C++ и могут генерировать ошибки/предупреждения, которые вам действительно не нужны.
Смежные вопросы