> Wenn ich das & entferne wird mir folgender Fehler angezeigt:
> "Das Argument vom Typ 'char **' ist mit dem Parameter vom Typ
> 'char ***' inkompatibel"
Also will die Funktion einen char*** haben.
Ich rate jetzt mal ins Blaue.
Normal kommt so etwas nur dann vor, wenn die Funktion selber sowohl das
Pointer Array als auch die Strings anlegt.
Mit einem
char* Strings[5];
erlaubst du ihm das aber nicht und hast dich nur syntaktisch irgendwie
aus der Affäre gezogen und den Code soweit verändert, dass der Compiler
zufrieden gestellt ist. Falsch bleibt es trotzdem.
Wenn ich recht habe, dann wird diese Funktion so benutzt:
1 | char** Strings;
|
2 |
|
3 | dllFunc( &Strings );
|
4 |
|
5 | char* Loop = *Strings;
|
6 | while( Loop ) {
|
7 | printf( "%d %s\n", strlen( Loop ), Loop );
|
8 | Loop++;
|
9 | }
|
10 |
|
11 | // und alles wieder löschen, sofern es keine Freigabefunktion in
|
12 | // der DLL dafür gibt. Wenn es eine gibt, dann ist natürlich diese
|
13 | // zu benutzen!
|
14 | Loop = *Strings;
|
15 | while( Loop ) {
|
16 | free( Loop ); // oder in C++ delete [] Loop;
|
17 | Loop++;
|
18 | }
|
19 | free( Strings ); // oder in C++ delete [] Strings;
|
Wie gesagt: Aus der Erfahrung heraus würde ich das für die
wahrscheinlichste Variante halten, warum die Funktion einen char***
haben will. Kann natürlich alles auch ganz anders sein. Daher: Doku
studieren!