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
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
- Alexander alba Bartolich (18.10.2009 18:31)
- Lars Meier (19.10.2009 20:05)
- MIchael Schumacher (18.10.2009 22:31)
- Lars Meier (19.10.2009 20:15)
- Markus König (21.10.2009 03:44)
- Michael Karcher (21.10.2009 10:21)
- Lars Meier (24.10.2009 11:56)
- MIchael Schumacher (21.10.2009 12:42)
- Lars Meier (24.10.2009 12:06)
