Ähm...
wieso tut ihr euch das überhaupt an!?
Pointerarithmetik ist ja schön und gut, aber in 99% aller Fälle geht es auch sehr viel bequemer:
Code:
void uart_send(void* data, uint16_t size)
{
uint16_t n;
uint8_t* data8 = (uint8_t*)data;
for(n=0; n<size; n++)
uart_putc(data8[n]);
}
oder alternativ:
void uart_send(void* data, uint16_t size)
{
uint16_t n;
for(n=0; n<size; n++)
uart_putc(((uint8_t*)data)[n]);
}
Ja, es ist eine Zählvariable dazugekommen, aber dafür ist der Code leichter lesbar und weniger fehleranfällig.
(Außerdem wird n niemals im Speicher existieren, der Compiler verwendet einfach ein Register dafür)
Lesezeichen