| Autor |
Nachricht |
Seraph
Mitglied
Benutzerprofil
Anmeldungsdatum: 19.07.2001
Beiträge: 27
|
Seraph Mitglied
23:44:00 03.11.2001 Titel: |
Dynamische Parameterübergabe |
Zitieren |
Ich möchte eine Funktion schreiben, welche ähnlich printf() eine dynamische Anzahl von Parametern zuläßt.
Test(char *Text, ...)
{
va_list arglist;
va_start(arglist, Text);
???
}
Aber wie bekomme ich nun die Parameter mit in meine Variable "Text" gespeichert ??? |
|
|
|
 |
Werbeunterbrechung
|
|
 |
Unregistrierter
|
Unregistrierter
02:22:00 04.11.2001 Titel: |
|
Zitieren |
Du mußt verschiedene Fälle unterscheiden.
Angenommen, Du wolltest z.B. sprintf wrappen, also Deine Parameter gemäß den printf-Regeln nach text schreiben, dann sieht das so aus:
| C++: | 1 2 3 4 5 6 7 8 | int mysprintf(char* text, ...)
{
va_list arglist;
va_start(arglist, text);
int n = vsprintf(text, arglist);
va_end(text);
return n;
} | |
(vorausgesetzt, text ist genügend groß dimensioniert, sonst knallt's).
Die Arbeit nimmt Dir hier die vsprintf-Routine ab.
In anderen Fällen mußt Du selbst wissen, was Deine Parameter zu bedeuten haben, in welcher Anzahl, und mit welchen Typen sie übergeben werden.
| C++: | 1 2 3 4 5 6 7 8 9 10 | int summe(int s, ...)
{
int s=0;
va_list arglist;
va_start(arglist, n);
for (int i=0; i<n; i++)
s += va_arg(arglist, int);
va_end(arglist);
return s;
} | |
Übrigens - an alle Mitleser - bräuchte ich aus eben solchen wrap-Gründen immer noch die Source eines vsscanf für MSVC. |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum nicht antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|