Ich habe ein Frägchen zu folgendem Quellcode:
1 | #ifndef RINGBUFFER_DEFINITIONS
|
2 | #define RINGBUFFER_DEFINITIONS
|
3 |
|
4 | #include <stdint.h>
|
5 |
|
6 | #define BUFFERSIZE 64
|
7 | typedef struct {
|
8 | uint32_t Zeit;
|
9 | uint16_t Zaehler_1;
|
10 | uint16_t Zaehler_2;
|
11 | uint16_t Zaehler_3;
|
12 | uint16_t Zaehler_4;
|
13 | } Datenstruktur_Messungen;
|
14 |
|
15 | struct tatata {
|
16 | Datenstruktur_Messungen Messungen[BUFFERSIZE];
|
17 | uint8_t _read;
|
18 | uint8_t _write;
|
19 | };
|
20 |
|
21 | struct tatata Ringbufferr;
|
22 |
|
23 | #endif
|
Ich möchte einen Ringbuffer realisieren, ich bin dazu analog dem
Beispiel hier in dem Tutorial vorgeganen. Eine Ausnahme - ich habe zwei
structs, einmal Datenstruktur_Messungen, dan "tatata" - einfach nur ein
Schnellname, um was auszuprobieren.
In dem Tutorial ist es so, dass es einfach so ist
1 | struct Ringbuffer {
|
2 | int read;
|
3 | int write;
|
4 | int Daten[BUFFERSIZE];
|
5 |
|
6 | };
|
Der Unterschied besteht darin, dass ich meine Daten in einer separaten
Struktur definieren möchte, da sie etwas komplexer sind und vlt. ändere
ich später nochmal was, das ginge so besser. Natuerlich könnte ich es so
machen:
1 | struct Ringbuffer {
|
2 | int read;
|
3 | int write;
|
4 | int Zaehler1[BUFFERSIZE];
|
5 | int Zaehler2[BUFFERSIZE];
|
6 | ...
|
7 | };
|
Kann ich das so realisieren wie oben probiert?
Hängt eigentlich im Speicher dann auch der "leere" Prototyp irgendwo und
blockiert Ressourcen (also dass ich gewissermaßen meine Struktur zweimal
im Speicher hab, einmal das Original "tatata" und dann meine
Arbeitskopie Ringbuffer? Oder hängt nur meine Arbeitskopie Ringbuffer im
Speicher und der Rest ist nicht belegt?