@Zellily

Какой подход к компиляции кода считается самым лучшим? Через дефайны, передаваемые в билдовый скрипт, создание нескольких бинарников и т.д.?

Положим, у меня есть код, который должен работать на разных моделях железа. Скажем, в модели А функции реализованы одним способом, а в модели Б - другим способом. Но названия и аргументы у них одинаковые.
Я могу:
1. Нафигачить дефайнов в коде. Типа:
#ifdef MODA функция1(...){...} #endif
#ifdef MODB функция1(...){...} #endif
И эти MODA, MODB задавать при запуске компиляции.
Код выглядит мерзко и запутано.
2. Разделить код по файлам с какими-нибудь суффиксами. И по суффиксам в скрипте определять, к какой модели принадлежит данный файл. Соответственно генерить разные бинарники на каждую модель.
Код выглядит опрятно и читаемо, но компиляция идёт долго.
3. Можно в рантайме определять на какой модели мы работаем (есть специально написанная функция). Можно эту функцию вызвать до мейна, записать её результат в переменную, а потом писать:
функция1(...) {
if(РаботаемНаMODA) {...}
if(РаботаемНаMODB) {...}
}
Код тоже как-то убого выглядит. Даже более убого, чем в первом случае.

У профи-программистов какой вариант считается лучшим? :) Или есть ещё какой-то, который я не знаю?
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
4. Вынос всех функций, зависящих от железа, в динамические библиотеки.
При старте определяется железо и подключаются нужные либы.
Особенно актуально, если железо включено не постоянно или может измениться по ходу работы.
Ответ написан
Комментировать
GavriKos
@GavriKos
3 вариант, только не с if-ами, а с наследованием, интерфейсами и прочим ООП. Раз уж названия и аргументы одинаковые - то вообще норм будет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы