Цитата(k155la3 @ Jun 29 2018, 10:34)

может
Код
#ifdef __cplusplus
extern "C" {
#endif
Проект CPP, с использованием модулей на C.
Именно так сейчас и написано. Вот только в коде такой функции (внутри блока extern "C" { }) нельзя применять синтаксис С++. Только С. Мой вопрос - как обойти это ограничение.
Цитата(Сергей Борщ @ Jun 29 2018, 11:10)

Кейл тут ни при чем. Искажение имен (name mangling) - штатное поведение любого компилятора C++. Обходится элементарно:
Код
extern "C" void DMA1_Stream6_IRQHandler()
{
GSM_serial.tx_dma_handler();
}
Т.е. внутри С функции-обработчика вызвать С++ функцию? Просто и гениально!
А вложенную С++ функцию можно объявить как
Код
GSM_class GSM_serial;
inline void GSM_class::tx_dma_handler();
Тогда и лишнего вложения функций не произойдёт, внутренняя просто подставится в обработчик прерывания.