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