Wenn die C printf()
und seine Familie zusammengestellt wird durch gcc
und -Wall
auf Kommandozeile überprüft werden, warnt der Compiler über Argumente verlegt entsprechend dem Format Zeichenfolge, die verwendet wird. Als Beispiel würde der folgende Code eine Fehlermeldung erhalten, die besagt, dass das Format 3 Argumente angegeben hat, aber tatsächlich nur zwei übergeben wurden.printf() wrapper Argumente gcc
printf("%d%d%d", 1, 2);
Wenn ein Wrapper zum printf()
schreiben, wie Sie diese Fähigkeit behalten haben? Eine Form der Funktion oder eines Makros wäre das, worüber ich nachdenken könnte. Aber auch einfache Parser könnten akzeptabel sein.
Auf dem Stackoverflow gibt es einige Möglichkeiten, einen Printf-Wrapper zu schreiben. Zwei übliche Ansätze sind using vprintf with varargs und using __builtin_apply. Ich habe diese beiden Ansätze ausprobiert, keiner hat funktioniert.
awesome! es funktioniert perfekt! – minghua
ein Hinweis, wenn 'my_printf' ein Klassenmitglied ist: fügen Sie der Argumentnummerierung 1 hinzu. es würde '__attribute__ ((format (printf, 3, 4)));' – minghua