Frage zur Puffergrößenberechnung

Hallo,

ist ausgehend von diesem Puffer..

char serial3_buffer[5];
const byte buffersize = sizeof(serial3_buffer) / sizeof(char);

..das hier..

i =  (i + 1) % buffersize;

..gleichbedeutend mit dem hier..

i =  (i + 1) % sizeof(serial3_buffer) / sizeof(char);

?

Gruß Chris

Chris72622:
Hallo,

ist ausgehend von diesem Puffer..

char serial3_buffer[5];

const byte buffersize = sizeof(serial3_buffer) / sizeof(char);

Macht irgendwie wenig Sinn. Die Länge von serial3_buffer ist bekant mit 5. Desweiteren dürfte das mit const byte so auch nicht gehen. Warum hier kein #define nutzen?

Chris72622:
..das hier..

i =  (i + 1) % buffersize;

..gleichbedeutend mit dem hier..

i =  (i + 1) % sizeof(serial3_buffer) / sizeof(char);

?

Gruß Chris

Gleichbedeutend und beides nur bedingt richtig! Was soll i bewirken?

i gibt die Position an, an der das Array beschrieben wird. Ist die letzte Position des Arrays erreicht, soll zum ersten Index gesprungen werden ([0]).

Gruß Chris

sschultewolter:
Desweiteren dürfte das mit const byte so auch nicht gehen. Warum hier kein #define nutzen?

Wieso sollte das nicht gehen? sizeof() wird zur Compile-Zeit berechnet. Und du kannst bei Zuweisungen auf const Variablen auch ruhig rechnen. Man kann es danach nur nicht mehr verändern.

Warum baust du nicht gleichn einen FIFO auf?
http://www.mikrocontroller.net/articles/FIFO