Je veux définir la macro, que sur la base d'une condition (existence de #define INITED
, pas le paramètre de la macro) renvoie la valeur, ou de générer l'erreur de compilateur, comme:#erreur interne de #define - Possible en C++ (génère une erreur lors de l'appel de la macro MyMacro SI une constante n'est pas définie)?
#error Not initialized!
J'ai essayé (pour myIdea.h
):
#ifdef INITED
#define MyMacro(x) x->method(); //something with x
#else
#define MyMacro(x) #error Not initalized!
#endif
Mais ce code génère une erreur (pas celle que je voulais) expected macro format parameter
.
Notez que je ne veux pas que le code (travail, mais cela chose peu différent):
#ifdef INITED
#define MyMacro(x) x->method(); //something with x
#else
#error Not initalized!
#endif
Le code ci-dessus geneate erreur juste au moment où INITED ne sera pas défini. Je veux générer l'erreur seulement quand j'appelle au MyMacro()
ET INITED n'a pas encore été défini.
Je ne suis pas l'esclave au premier code, mais je veux que le résultat fonctionne exactement comme je l'ai décrit ci-dessus (Générer une erreur lors de l'appel macro MaMacro IF constante inited n'est pas défini) .
Je suis assez certain que ce n'est pas possible. Cela nécessiterait plusieurs passages à travers le code par le préprocesseur, et je suis assez sûr qu'il ne le fait pas. –