Я запутался, почему мой компилятор бросает ошибку в следующих условиях:C - выражение должно быть изменяемым именующее
void funcExample (void * p_Buf, uint16_t len)
{
uint16_t i;
for (i = 0; i < len; i++) {
otherFunc (((uint8_t *)p_Buf)++); //error = expression must be a modifiable lvalue
}
}
, но если я бросаю перед перейти к otherFunc, это нормально, потому что ни одна проблема не увеличивающиеся непрямый указатель:
void funcExample (void * p_Buf, uint16_t len)
{
uint16_t i;
uint8_t * p_Buf_8bit;
p_Buf_8bit = (uint8_t *) p_Buf;
for (i = 0; i < len; i++) {
otherFunc (p_Buf_8bit++);
}
}
Нельзя ли увеличить указатель на пустоту после литья? я что-то здесь не понимаю?
не идентичны, но * очень * [** подобный вопрос здесь **] (http://stackoverflow.com/questions/24002044/почему-кан-я-не-делать-арифметический на-монолитный из-а-ничтожного-указателя). – WhozCraig