Скажем у вас есть проект А, в которым вы юзаете в разное время написанные B и C, а потом еще подключаете стороннюю библиотеку D.
По историческим причинам у них у всех разные коды возврата ошибки (например A_init_convo(type_t type) возвращает 342 в случае если сокет недоступен, или B_send_transmission(u8 * data, u32 size) вернет 24 если data = NULL).
Делаете ли какие-либо обертки? У нас, например, есть проект (который пока что без внешних зависимостей, только наши либы, у которого особым образом регистрируются коды ошибок с описанием (связка функций error_register + XMACRO).