Blub schrieb:
> Geht doch!
Natürlich ist der Code (wenn man die <some code>-Zeilen auskommentiert)
standardkonformes C, weswegen der Compiler keine Fehlermeldung ausgibt.
"Standardkonform" heißt aber noch lange nicht "erwartungsgemäß
funktionierend" :)
Versuch mal, in blub() die mit <some code> markierte Stelle mit
sinnvollem Code auszufüllen:
1 | va_start(ap, b);
|
2 | <some code>
|
3 | va_end(ap);
|
Dann wirst du sehr wahrscheinlich merken, dass deine Art und Weise,
stdarg.h zu verwenden, nicht zum gewünschten Ziel führt.
Du könntest an dieser Stelle natürlich aus ap mit va_arg eine weitere
va_list ap2 auslesen, diese mit einem weiteren va_start initialisieren
und dann aus ap2 mit va_arg die eigentlichen Argumente auslesen. Das
wäre dann so ziemlich die unsinnigste, umständlichste, verworrene und
fehlerträchtigste Methode, dein Ziel zu erreichen, für das es einen ganz
geradlinigen Weg gibt :)
Blub schrieb:
> wo diese nicht näher spezifizierten Argumente ebenfalls über einen
> ...-Operator weitergegeben werden sollen.
Was sind die Gründe dafür, dass das so sein soll?
Übergib einfach die va_list als Argument (ohne die ...), und der Käse
ist gegessen.