Мне нужно документировать проект с помощью doxygen, но также нужно игнорировать некоторые макросы, которые я использую для чтения в небольших разделах моего кода, для которых нет смысла появляться в документации.Как сделать doxygen игнорировать функциональные макросы при создании документации?
вот минимальный пример (я в основном использую макросы индексировать некоторый C-стиль 2D или 3D-массивы):
#include <cstring>
/*! \file notes.cpp
\brief A test for macros and doxygen
*/
/// my main function
int main()
{
double loc_arr[9][4][4];
memset (loc_arr, 0.0, 144 * sizeof (double));
#define BLOCK(i) (&(loc_arr[i][0][0]))
for (int ii = 0; ii < 9; ++ii)
{
memset (BLOCK(ii), double(ii), 16 * sizeof (double));
}
#undef BLOCK
return 1;
}
Когда я любовницей его, со следующими параметрами:
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
я получаю это:
screenshot http://i39.tinypic.com/2rf583c.png
Обратите внимание, что единственным способом я Коула d избегайте документирования макросов, установив ENABLE_PREPROCESSING = NO
, что является проблемой для меня, так как он также исключает график включения в верхней части страницы.
решение я нашел чистейшие, чтобы окружить макрос '/// @cond Foo' непосредственно перед' #define ... 'и' /// @ endcond' после '# undef'. спасибо @Colin за то, что указали мне в правильном направлении (я только пытался понять, что говорят комментарии в файле doxyfile) – Davide
@ Davide: Можете ли вы расширить это в ответ? – einpoklum
@einpoklum как пожелаете – Davide