A
André Hänsel
Hello list,
while programming for an embedded platform in C, I have an array and a
pointer to a single element of the array:
uint8_t buffer[100], *bp = buffer;
*bp = U0RXBUF; // Read a character
bp++; // Move pointer forward
if (bp - buffer == sizeof(buffer)/sizeof(uint8_t)) // Buffer overflow?
bp = buffer; // Reset pointer to beginning
When I look at the disassembly there is no code generated for "bp =
buffer;".
Is the compiler allowed to assume that bp - buffer will never be 100
because the last element of buffer is 99 and optimize it away? Or did
I make some other mistake?
Regards,
André
while programming for an embedded platform in C, I have an array and a
pointer to a single element of the array:
uint8_t buffer[100], *bp = buffer;
*bp = U0RXBUF; // Read a character
bp++; // Move pointer forward
if (bp - buffer == sizeof(buffer)/sizeof(uint8_t)) // Buffer overflow?
bp = buffer; // Reset pointer to beginning
When I look at the disassembly there is no code generated for "bp =
buffer;".
Is the compiler allowed to assume that bp - buffer will never be 100
because the last element of buffer is 99 and optimize it away? Or did
I make some other mistake?
Regards,
André