Den Ausdruck
(sizeof(menue) / sizeof(TMenuStruct))
kann der Preprozessor doch vorausberechnen und entsprechend eine Konstante einsetzen, in diesem Falle die 3. Wenn ich das selbst direkt im Programcode mache geht es auch einwandfrei.
Warum sollte er meine index Variable plötzlich als unsigned betrachten ???? Das gibt doch irgendwie (für mich) keinen Sinn.
Das heisst für mich soviel, daß man keinen signed mit einem unsigned korrekt vergleichen kann ohne explizite Typwandlung....
also dann auf Nummer sicher:
if ((int)(index) >= (int)((int)(sizeof(menue) / (int)sizeof(TMenuStruct))))
geht doch