nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Compilerwarnung Pointertyp const char **

Von: Lars Meier (skuldleave_this_out81@gmx.de) [Profil]
Datum: 18.10.2009 16:39
Message-ID: <4adb2865$0$2406$9b622d9e@news.freenet.de>
Newsgroup: de.comp.lang.c
Hallo NG,

seit einiger Zeit schon habe ich ein Verständnisproblem im Zusammenhang
mit const und Zeigern: Häufig schreibe ich Code zum Parsen von speziell
formatiertem Text. Dabei gibt es bestimmte Textblöcke die an mehreren
Stellen eingelesen werden. Deshalb werden diese Blöcke meist von einer
eigenen Funktion bearbeitet. Diese Funktionen erhalten dann meist die
aktuelle Leseposition im String als "char **", so dass diese die
Leseposition weitersetzen können. Dabei soll der Text nicht
veränderlich
sein, ich würde also gerne den Parameter ein const verpassen. Doch wo
muss es stehen? Ich hätte eigentlich gedacht "const char **"
wäre
richtig. Doch dann meckert der Compiler. Hier ein Beispiel:

void func1(const char *s)
{
}

void func2(const char **s)
{
++(*s);
}


int main()
{
char buffer[100];
char *s = 0;

s = &buffer[10];
func1(s);   // alles Bestens
func2(&s);  // hier ist laut Compiler der Zeigertyp inkompatibel
return 0;
}

Der gcc sagt dazu:

cp.c:18: warning: passing argument 1 of ‘func2’ from incompatible
pointer type

Wie muss der Code richtig aussehen?

Lars

[ Auf dieses Posting antworten ]

Antworten