typedef und Probleme mit "incompatible types" :(
-
Hi,
verstehe nicht was der Fehler ist. Kann mir jemand helfen? Auszugsweise der relevante Code:
typedef struct { char menu_name[64]; } menu_item; typedef struct { menu_item menus[10]; } menu_list_struct; int RcMainMenu() { menu_list_struct menu_list; RcBuildMainMenuButtons(&menu_list); } int RcBuildMainMenuButtons(menu_list_struct* menu_list) { menu_list->menus[0].menu_name = "Buttonname"; }
Für die letzte Anweisung bekomme ich ein:
"error: incompatible types in assignment".Habe ich da irgendwas mit den Referenzen durcheinander gebracht?
Vielen Dank!
-
ich nehme an, du meinst
strcpy(menu_list->menus[0].menu_name,"Buttonname");
}
-
Ahh.. genau. Danke!
Allerdings tue ich mir mit der Begründung dafür etwas schwer. Wie lautet die korrekterweise?
-
bitte strncpy auch hier verwenden. vielleicht will er das dann mal dynamisch haben oder so und produziert mit einem blinden strcpy einen buffer overflow. grundsätzlich ist die methode mit einem festen vorgegebenen buffer für strings sowieso keine besonders gute.
strings werden in c immer anhand ihrer startadressen verwendet. mit einer normalen zuweisung weist man also nur startadressen zu, nicht aber den ganzen string. das musst du eben mit dem strcpy machen.
-
grundsätzlich ist die methode mit einem festen vorgegebenen buffer für strings sowieso keine besonders gute.
Aber sie läuft.
Wie man Pufferüberläufe verhindert ist nicht so wichtig, solange man's auch tut.