printf
-
wie bekommt printf mit, dass es genügen parameter übergeben bekommen hat?
als Beispielprintf("%d", 5); //kein Warnung printf("%d", 5, 7); //kein Warnung printf("%d"); //Warnungworauf ich hinaus will, ich möchte über ellipsen das auch machen können, ohne Angabe der Anzahl zu wissen wieviel Parameter übergeben wurden.
(diese Frage ist die Weiterführung eines älteren Post von mir, der wohl etwas untergegangen ist)
Ich hoffe das mir der Mechanismus von printf da etwas weiterhilft.
-
Es gibt da keinen Standard-Mechanismus. Wenn, dann ist er compilerspezifisch und damit nicht portabel. Bei dem vom g++ kannst Du darüberhinaus nur angeben, dass sich eine Funktion "wie printf" (oder scanf, oder strftime) verhalten soll.
Die Frage ist im anderen Thread übrigens nicht untergegangen, es wurde Dir mehrfach gesagt dass Du Ellipsen nicht überprüfen kannst. Es geht nicht. Wirklich.

-
Du kannst da natürlich mit Hacks arbeiten. Die wären aber nicht portabel.
Könntest dir anschauen wo auf dem Stack die Parameter abgeleget werden (wenn sie überhaupt dort landen) und gucken wo der liegt und wo die erste lokal angelegte Variable ist. Und so weiter und so fort. Ekelig, nicht zu empfehlen, sogar von abzuraten, aber sicherlich möglich.
-
achso, na gut, dann hab ich wohl pech gehabt, schade eigentlich.
-
FreakyBKA schrieb:
achso, na gut, dann hab ich wohl pech gehabt, schade eigentlich.
Dir wurden in dem Anderen Thread sowohl die probleme von Ellipsen als auch saubere Alternativen genannt. Sauber heißt aber nicht zwangsläufig weniger Tipaufwand bedeutet. Nur weil dir die Antworten nicht gefallen, brauchst du keinen weiteren Thread zu öffnen.
Nochmal: Ellipsen sollte man aus guten Grund in C++ nicht verwenden. Mehrfache Übergaben kann man unter anderem durch Übergabe von Containern erreichen (zudem ist die Lösung auch flexibler da dynamisch zur Laufzeit). Und falls dir der Tipaufwand zu viel ist, kannst du dir auch noch Boost anschauen, konkret:
http://www.boost.org/libs/assign/doc/index.htmlcu André