Dire que j'ai:Comment avoir des macros développées par doxygen, mais pas documentées en tant que définition?
#define MY_MACRO(FOO) void FOO();
MY_MACRO(hi);
MY_MACRO(hey);
MY_MACRO(hello);
#undef MY_MACRO
Je veux que les macros soient étendues par doxygen, que je suis capable de faire en configurant la bonne façon:
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
EXPAND_AS_DEFINED = MY_MACRO
Cela me permet de voir ELARGI résultat des macros en tant qu'API documentées dans la sortie doxygen (fonctions hi
, hey
et hello
). Tout cela est bon pour le moment. Mais le problème est que doxygen documente également MY_MACRO
comme une définition. Cependant, je ne veux pas que les clients de l'API soient au courant de MY_MACRO
, car il n'est pas déformé et n'est pas utilisable par eux, et ne devrait pas être visible pour eux. J'ai EXTRACT_ALL = YES
dans ma configuration doxygen et je ne veux pas changer cela. J'ai essayé la configuration suivante sans succès:
PREDEFINED = DOXYGEN_SKIP_FOR_USERS
Avec le code suivant:
#ifndef DOXYGEN_SKIP_FOR_USERS
#define MY_MACRO(FOO) void FOO();
#endif /*DOXYGEN_SKIP_FOR_USERS*/
MY_MACRO(hi);
MY_MACRO(hey);
MY_MACRO(hello);
#undef MY_MACRO
Ce cache la documentation de la définir, mais bien sûr, empêche l'expansion, donc je ne comprends pas les fonctions documenté dans l'API générée.
J'apprécierais votre aide.
Remarque sur le double trait de soulignement: les noms contenant un trait de soulignement double sont réservés à l'usage du compilateur. Pour éviter de marcher sur les autres orteils, il est préférable d'éviter d'utiliser un double trait de soulignement dans vos propres identifiants. –
@Bart Avez-vous une citation à portée de main? Je pensais que c'était seulement des identifiants commençant par un double trait de soulignement. (Et les identificateurs globaux commençant par un trait de soulignement, etc.) – llasram
@Bart et @llasram: Je pense que cette règle de double trait de soulignement est une règle C++, pas pour C. (Je n'ai pas remarqué le drapeau C++). Mais en tout cas pour le but dont nous parlons ici, on peut facilement trouver juste un autre préfixe, pas trop méchant. –