Цитата(Rash @ Oct 2 2015, 23:09)

По записи вроде всё верно, хотя не проверял, до понедельника не на чем. Но смысл не постоянно писать такими громоздкими записями, а завернуть их в макросы или для противников макросов в inline функции и использовать
1. Не все там верно, нужно же отразить модификацию собственно указателей, т.е. в конце добавить
Код
*ppData_tx = ptx;
*ppData_rx = prx;
2. Ход мыслей понятен, но имхо такое, что нет смысла бояться локальных переменных даже в таком случае.
Т.е. в случае с макросом - обернуть его в do{}while(0) и создавать столько локальных перем. сколько нужно.
3. Не все компиляторы, что существуют, - одинаково хорошие

и если даже такой не сильно тяжелой строкой удалось вогнать его в багу, - повод задуматься, стоит ли так закручивать сюжет. Если создание лишних сущностей отдать на откуп компилю, совсем не факт, что он справится с этим.
я недавно написал под SDCC, типа поиграться решил
Код
crc = (crc >> 1)^((crc & 1)? 0x8C:0);
так там вообще неправильный код сгенерировался.
пришлось исправить на
Код
crc = ((crc & 1)? 0x8C:0) ^ (crc >> 1);
вот те на, CSE
но то sdcc. милость к падшим тсз нада проявлять