deprecated conversion



  • Hallo ,

    in alten Tagen waren derartige Hilfsketten angewand :
    **
    #define TOKS 7
    static char *ptoken[TOKS] = { "-rp","-ip","-dw","-tp","-lp","-f","-b" };
    **

    Beispiel:

    #define TOKS 7
    int main(int argc,char *pArgv[])
    {
      char *ptoken[TOKS] = {"-rp","-ip","-dw","-tp","-lp","-f","-b"},*pPar[TOKS]={0};
      for(int i(1); i < argc-1; i++)
       for(int n(0); n < TOKS; n++)
          if(!pPar[n]) pPar[n] = !strcmp(ptoken[n],pArgv[i])?pArgv[(i+=1)]:0;
    
      for(int n(0); n < TOKS; n++)
       printf("%s=%s\r\n",ptoken[n],pPar[n]);
    
      return 0;
    }
    

    Nun trägt es sich zu, das es ein Complier -Warning für diese Weise gibt:

    Meldung:
    **warning: LINE 4 deprecated conversion from string constant to[-Wwrite-strings]
    **
    Welche Formen der Hilfkettenherstellung würde man für einen C/C++ Compiler noch sehen, im Aspekt der schnellen Ausführung ? (also ohne Lib-funktionen)

    Grüsschen
    Karsten (ups Kursiv ging nicht Multi Edit ^^)



  • const char *
    


  • reicht leider nicht 🙂



  • const char *ptoken[TOKS] = {"-rp","-ip","-dw","-tp","-lp","-f","-b"}, *pPar[TOKS]={0};
    

    ideone getestet.



  • Ist ja auch nur ein Warning um das es geht, dies wird zb beim gcc++ auf Linux erzeugt.

    Die Seite ist ja Lustig ..


  • Mod

    Aber es ist ein Problem.
    Du weist eine Konstante einem schreibbaren Zeiger zu.
    const ist alles was nötig ist.


Log in to reply