[gelöst]veraltete Konvertierung von Zeichenkettenkontante nach char*
-
Hi,
in einem Programm, das ich seit einiger Zeit pflege, erhalte ich immer beim Compilieren die Warnung:
Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*«
Sie stammt aus folgendem Code
static struct EC_STRING_MAP_TYPE ec_string_map[]= { { EC_OK ,"EC_OK ",}, { EC_MESSAGE ,"EC_MESSAGE ",}, { EC_UNKNOWN ,"EC_UNKNOWN ",}, { EC_SYS_FAIL ,"EC_SYS_FAIL ",}, ... // hier kommen noch viele weitere Einträge }
Die obige Warnung kommt für jede der (sehr vielen) Zeilen.
Die Namen EC_OK, EC_MESSAGE, usw. stammen aus einem enum, dessen Werte teilweise große Sprünge machen. Das sage ich dazu, damit nicht der Vorschlag kommt, ein einfaches String-Array daraus zu machen.
Es handelt sich zwar nur um Warnungen. Aber sie kommen bei jedem Compilerlauf und werden allmählich einfach lästig . Deshalb würde ich sie gerne los.
Die Frage ist jedoch, wie?
Ich habe keine Idee dazu.
-
Da fehlt das const in EC_STRING_MAP_TYPE.
-
Auch mit const kommen die Warnungen immer noch.
So habe ich es verstanden:static const struct EC_STRING_MAP_TYPE ec_string_map[]= { { EC_OK ,"EC_OK ",}, ... }
-
Nein, deine Struktur wird irgendwie so aussehen:
struct EC_STRING_MAP_TYPE { int value; char *string; };
Aus char* muss const char* werden, denn wie die Fehlermeldung sagt, ist es veraltet eine Zeichenkette nach char* zu konvertieren.
-
Hoi, so geht's
Danke