2014-09-27 2 views
1

Я использую doxygen 1.8.8 для документирования проекта C, у меня есть AUTOLINK_SUPPORT, установленный в YES.Doxygen: автоопределение макросов и элементов перечисления

Скажем, я макрос документированы как то:

/** 
* My macro 
*/ 
#define MY_MACRO 

Тогда я упоминаю этот макрос в комментариях для некоторой функции, например:

/** 
* My function uses `MY_MACRO` heavily 
*/ 
void my_func(void) { ... } 

В этом случае, MY_MACRO ISN Это ссылка. После того, как много экспериментировать, я нашел несколько способов сделать Doxygen сделать ссылки:

  • указать это следующим образом: \ref MY_MACRO. Мне это не нравится, потому что (а) не так удобно писать и читать в комментариях; (b) шрифт не моноширин. Я попытался объединить его с обратными окнами, это не сработает;
  • указать его следующим образом: MY_MACRO(). Мне это не нравится, потому что, очевидно, эти круглые скобки предполагают, что макрос параметризуется, но это не так;
  • укажите это в нижней части комментария, например: @see MY_MACRO. Мне это не нравится, потому что это не удобно читать, было бы намного лучше, если бы макрос ссылался на inline.

Итак, как сделать это ссылкой только в комментарии к функции?

UPD: мой Doxyfile: http://vpaste.net/FuIk4

+0

Каковы настройки для ENABLE_PREPROCESSING, MACRO_EXPANSION, PREDEFINED, EXPAND_ONLY_PREDEF, EXPAND_AS_DEFINED. – Rich

+0

@Rich ENABLE_PREPROCESSING = YES, MACRO_EXPANSION = NO, PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS, EXPAND_ONLY_PREDEF = NO, EXPAND_AS_DEFINED пуст. Я обновил свой вопрос: добавлена ​​ссылка на полный файл doxy –

+0

Странно, я не видел этого раньше. Может быть, отключить SKIP_FUNCTION_MACROS исправить? – Rich

ответ

0

Как указано в autolink docs, мы должны предварять имя макроса, пункт перечисления или имя перечисления с #:

/** 
* My function uses `#MY_MACRO` heavily 
*/ 
void my_func(void) { ... } 

Затем MY_MACRO становится ссылку ,

Смежные вопросы