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 ..
-
Aber es ist ein Problem.
Du weist eine Konstante einem schreibbaren Zeiger zu.
const ist alles was nötig ist.