मैं उलझन में क्यों मेरे संकलक निम्नलिखित हालत में एक त्रुटि फेंक रहा है:सी - अभिव्यक्ति एक परिवर्तनीय lvalue होना चाहिए
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 को पारित करने से पहले डाली, यह ठीक है क्योंकि कोई समस्या नहीं incrementing है एक गैर-शून्य सूचक:
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