Разделение звонящего по общему объектному файлу

0

Я работаю над приложением, которое состоит из декодера и кодера, иерархия выглядит так:

debug_info.h включен как кодером, так и декодером. После компиляции либо кодер, либо декодер могут выполняться в зависимости от usecase. Я хочу разделить вызывающего абонента в debug_info.h, то есть во время выполнения я мог бы определить, вызывает ли кодер его или декодер.

Мой подход:

Я включил отдельные флаги (dec_enable и enc_enable) в файле декодера и кодировщика.

Я поставил на них чек debug_info.h

#ifdef dec_enable
//---Do Something--
#else
//--Do Something else

Это не работает. На самом деле это не должно быть потому, что только во время выполнения мы узнаем, что происходит.

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

Теги:
linker
runtime

1 ответ

0

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

Вы должны разработать программу, чтобы алгоритмы кодировщика/декодера ничего не знали, кроме назначенной им задачи. Затем в файл отладки входит кодировщик/декодер.

Если вам нужно изменить ту функцию, которая вызывается во время выполнения, просто напишите простой оператор if-else. Если вам почему-то нужен код более общий, вы можете использовать указатели на функции, хотя в этом случае нет очевидной необходимости.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню