Say I have:
#define MY_MACRO(FOO) void FOO();
MY_MACRO(hi);
MY_MACRO(hey);
MY_MACRO(hello);
#undef MY_MACRO
I want the macros to be expanded by doxygen, which I am able to do by configuring it the right way:
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
EXPAND_AS_DEFINED = MY_MACRO
This enables me to see the expanded result of the macros as documented APIs in the doxygen output (functions hi
, hey
, and hello
). That is all good so far. But the problem is that, doxygen also documents MY_MACRO
as a define. However, I do not want the clients of the API to know about MY_MACRO
, since it is undefed and is not usable by them, and should not be visible to them.
I have EXTRACT_ALL = YES
in my doxygen configuration and I do not want to change that. I have tried the following configuration without success:
PREDEFINED = DOXYGEN_SKIP_FOR_USERS
With the following code:
#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
This hides the documentation of the define, but of course prevents the expansion, so I do not get the functions documented in the generated API.
I would appreciate your help.