Forum: Compiler & IDEs Anzahl in struct zählen


von DrWright (Gast)


Lesenswert?

Guten Abend, ich habe folgendes Problem:
Ich benutze mehrere structs zum Speichern von Menueinträgen für ein LCD. 
Die sehen so aus.
1
struct menu_list{
2
  const char *Title;
3
  const uint8_t mode;  
4
  zeiger_func text;
5
};
6
7
const struct menu_list WasserSim_Menu[] PROGMEM = {
8
  {_string_WASSER_MODE,WATER_MODE,_water_mode},
9
  {_string_modul_status,WATER_START,_water_startstop},
10
  {_string_WASSER_IMPULSE,WATER_IMPULSE,_water_impulse},
11
  {_string_WASSER_PRESSURE,WATER_PRESSURE,_water_pressure},
12
  {_string_WASSER_COUNT,WATER_COUNT,_water_count},
13
};
(*Title zeigt auch auf eine Adresse im Flash)

und werden so aufgerufen:(Auszüge aus dem Code)
1
zeiger_func TextFunc = (zeiger_func)pgm_read_word(&array[i+line_offset].text);
2
    
3
4
und 
5
6
const char *title = (const char*)pgm_read_word(&array[i+line_offset].Title);

Wie zähle ich die Anzahl der Einträge in der menu_list WasserSim_Menu 
structur?

von Yalu X. (yalu) (Moderator)


Lesenswert?

mit
1
sizeof WasserSim_Menu / sizeof WasserSim_Menu[0]

: Bearbeitet durch Moderator
von Michael H. (michael_h45)


Lesenswert?

Mit sizeof() die Struktur durchlaufen.

von radiostar (Gast)


Lesenswert?

> Wie zähle ich die Anzahl der Einträge in der menu_list WasserSim_Menu
structur?

Äh.. 5 sind drin.

von Eduard S. (schneehase)


Lesenswert?

sizeof( WasserSim_Menu ) / sizeof( struct menu_list )

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

DrWright schrieb:
> Wie zähle ich die Anzahl der Einträge in der menu_list WasserSim_Menu
> structur?

Gar nicht.

Das ist nämlich keine Struktur, das ist ein Array aus Strukturen.

Und wie man die Anzahl der Elemente eines Arrays ermittelt, hat Yalu 
schon dargelegt. Das funktioniert so immer, egal, welchen Datentyp die 
Arrayelemente haben.

von Dirk B. (dirkb2)


Lesenswert?

Denke aber daran, dass dies nur dort funktioniert, wo das Array auch 
sichtbar ist.

Von Arrays, die als Parameter in eine Funktion kommen, bleibt nur die 
Adresse übrig. Da klappt das nicht mehr.

von DrWright (Gast)


Lesenswert?

Yalu X. schrieb:
> mitsizeof WasserSim_Menu / sizeof WasserSim_Menu[0]

Klasse funktioniert! Das ich nicht daran gedacht habe :/

von Michael H. (michael_h45)


Lesenswert?

DrWright schrieb:
> Yalu X. schrieb:
>> mitsizeof WasserSim_Menu / sizeof WasserSim_Menu[0]
>
> Klasse funktioniert! Das ich nicht daran gedacht habe :/

damit kriegst du aber nicht:

DrWright schrieb:
> die Anzahl der Einträge in der menu_list WasserSim_Menu
> structur

sondern die anzahl elemente im array.

von DrWright (Gast)


Lesenswert?

Michael H. schrieb:
> DrWright schrieb:
>> Yalu X. schrieb:
>>> mitsizeof WasserSim_Menu / sizeof WasserSim_Menu[0]
>>
>> Klasse funktioniert! Das ich nicht daran gedacht habe :/
>
> damit kriegst du aber nicht:
>
> DrWright schrieb:
>> die Anzahl der Einträge in der menu_list WasserSim_Menu
>> structur
>
> sondern die anzahl elemente im array.

Schon klar, das ist auch das was ich wollte ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.