есть несколько вариантов функции (например bin2bcd): чистый С; с использованием inline assemblerа AVR-GCC; 8051-SDCC (не ассемблер, но по-другому использованы переменные) и т.д.
как лучше сделать их включение в текст программы :
- через #ifdef, перед подключением библиотеки определять макрос типа #define use_bin2bcd_avr 1 и т.п.;
- заключать каждую из этих функций в макрос #define include_bin2bcd_avr ...\...\...\..., потом перед использованием включать нужную функцию этим макросом;
- определять что нужно включать автоматически, через какие-то определенные самим компилятором константы или ключи;
второй метод кажется наиболее универсальным, но требует ручного включения всех нужных функций. первым методом определением одного макроса можно сделать включение всех нужных функций под конкретную архитектуру. Третий метод хоть и автоматический, но компиляторозависимый и наименее гибкий.