Постинкремент C / C ++ более чем на один

Я читаю байты из буфера. Но иногда я читаю слово или длиннее.

// assume buffer is of type unsigned char *
read_ptr(buffer+(position++))

Это нормально, но как я могу увеличить позицию на 2 или 4? Я не могу заставить оператор + = выполнять пост-инкремент, не так ли?

Причина в том, что у меня есть это большое ужасное выражение, которое я хочу оценить, одновременно увеличивая переменную позиции.

Думаю, я придумал собственное решение. Я почти уверен, что это работает. Но все это возненавидят, так как это не очень читаемый код.

read_ptr(buffer+(position+=4)-4)

Затем я сделаю это макросом после небольшого тестирования, чтобы убедиться, что он работает правильно.

ЗАКЛЮЧЕНИЕ:

Не делайте этого. Это' Это просто плохая идея, потому что это такая вещь, которая генерирует неподдерживаемый код. Но ... оказалось, что преобразовать любой оператор предварительного увеличения в оператор последующего увеличения довольно просто.

6
задан Steven Lu 19 March 2011 в 07:11
поделиться