[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


Log in to reply