В некторых функциях иногда возникает необходимость вернуть несколько значений. Какие для этого есть красивые способы? Я знаю следующие,
1. Самое простое, через глобальные переменные, некрасиво. 2. Запись по преданному адресу, толсто и медлительно. 3. Возврат длинного слова (в регистрах) составленного из нескольких значений. Есть варианты через битовые сдвиги или union. Красивый макрос написать не получается, то то (typeof не работает, expected specifier-qualifier-list before ‘typeof’), то се (начинается использование стека при взятии адреса, хотя мне надо только тип сменить без последствий). Да и ещё в месте вызова надо это слово парсить на куски. Но все же это пока лучший из известных мне вариантов.
Язык C, компилятор avr-gcc.
x = s2i(s);
ri = (s16_t) (x & 0xFFFF);
s = (const char *) (u16_t) (x >> 16);