Comment dois-je utiliser correctement __attribute__ ((format (printf, x, y))) dans une méthode de classe en C ++?

Je suis en train de définir une méthode de classe pour déboguer des impressions qui se comportent comme des printf:

inline void debug(const char* fmt, ...) __attribute__ ((format (printf, 1, 2)))

Ce dont il se plaint:

error: format string argument not a string type

J'ai rappelé qu'une méthode de la classe de déclaration implicite this paramètre, donc j'ai changé l'emplacement des paramètres à 2, 3:

inline void debug(const char* fmt, ...) __attribute__ ((format (printf, 2, 3)))

et maintenant, il compile, mais il semble que les paramètres sont décalées, comme si le this paramètre ont été traités comme faisant partie de la liste d'arguments.

Comment puis-je déterminer la fonction qui this ne fait pas partie de la chaîne que je veux imprimer?

source d'informationauteur Nathan Fellman