Скажем, у меня есть:
#define MY_MACRO(FOO) void FOO();
MY_MACRO(hi);
MY_MACRO(hey);
MY_MACRO(hello);
#undef MY_MACRO
Я хочу, чтобы макросы были расширены с помощью doxygen, что я могу сделать, настроив его правильно:
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
EXPAND_AS_DEFINED = MY_MACRO
Это позволяет мне видеть расширенный результат макросов в виде документированных API в выходных данных doxygen (функции hi, hey и hello). Пока все хорошо. Но проблема в том, что doxygen также документирует MY_MACRO как определение. Однако я не хочу, чтобы клиенты API знали о MY_MACRO, так как он не защищен и не может использоваться ими и не должен быть им виден.
У меня есть EXTRACT_ALL = YES в моей конфигурации doxygen, и я не хочу это менять. Я безуспешно пробовал следующую конфигурацию:
PREDEFINED = DOXYGEN_SKIP_FOR_USERS
Со следующим кодом:
#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
Это скрывает документацию определения, но, конечно, предотвращает расширение, поэтому я не получаю функции, задокументированные в сгенерированном API.
Я был бы признателен за вашу помощь.