Dynamische Parameter bei Funktionen

partitionist

Erfahrenes Mitglied
Bei der Funktion - main(int argc, char *argv[]) - kann man von außen belibieg parameter angeben. Meine Frage ist es, wie kann ich einer internen Funktion beliebig viele parameter übergeben.

Beispiel:
Code:
  void Test(int argc, char *argv[])
  {
  ...
  }
  
  int main(int argc, char *argv[])
  {
  	   Test(...);  //Hier muss man beide parameter angeben ich will ja keine festen werte haben
  
  }

Was kann man hier tun?
 
Hi.

Also du kannst es natürlich genauso machen wie bei main. Die Funktion main bekommt nämlich auch nur 2 Parameter, aber die Parameter auf der Kommandozeile werden in ein Array gepackt und dann übergeben. Das passiert allerdings automatisch und du müßtest das per Hand machen.

Wahrscheinlich willst du aber eher eine Funktion wie printf(char* format, ... ) schreiben, der eben eine beliebige Anzahl von Parametern übergeben werden kann?!

Dann schau mal hier
 
Nicht schlecht die Seite aber wie bekomme ich dann aus der Funktion trace(..) einzelne parameter wie bei main()

Code:
 if(!strcmp(argv[1], "test"))
 ...
 else if(!strcmp(argv[2], "hallo"))
 ....
 
Naja, du hast kein c-String-Array mehr, sondern eine va_list. Da mußt du dich wie auf der Seite beschrieben durchhangeln. Das geht dann mit der Funktion va_arg.

Du mußt allerdings wissen welchen Typ jeder einzelne deiner Parameter hat. Das machst du wie auch bei der printf Funktion mit einem Format Paramter den du vor den variablen Parametern übergeben mußt.
 
Zurück