Я читаю байты из буфера.Но иногда я читаю слово или больше.
// assume buffer is of type unsigned char *
read_ptr(buffer+(position++))
Это хорошо, но как я могу увеличить позицию на 2 или 4?Я никак не могу заставить оператор +=
постинкрементать, не так ли?
Причина в том, что у меня есть это большое ужасное выражение, которое я хочу оценить, в то же время увеличивая переменную позиции.
Я думаю, что придумал собственное решение.Я уверен, что это работает.Все будут ненавидеть это, так как это не очень читаемый код.
read_ptr(buffer+(position+=4)-4)
Затем я сделаю это в макросе, немного протестировав его, чтобы убедиться, что он работает правильно.
ЗАКЛЮЧЕНИЕ:
Не делай этого.Это просто плохая идея, потому что это та вещь, которая генерирует не поддерживаемый код.Но ... оказывается довольно легко преобразовать любой преинкрементный оператор в постинкрементный.