Документирование макрофункций в С++ с Doxygen

Как документировать макрофункцию в С++ с помощью Doxygen и ссылаться на нее в документации моего кода, не относящегося к Evil?

В частности, у меня есть обычный регулярный класс "Message", определенный в Message.H, который пользователи могут наследовать, чтобы определить свои собственные сообщения. В другом файле ( "MessageHelpers.H" ) у меня такой сумасшедший макрос:

//! Users must call this macro to register their messages...
/*! 
   ...lest they be forced to type all sorts of boring and 
   error-prone boiler plate code. 
   blah blah blah... More specific documentation and explanation...
*/
#define REGISTER_MESSAGE_TYPE(MSGTYPE) \
 do_some(MSGTYPE);                     \
 seriously();                          \
 crazy_stuff(MSGTYPE);                       

В документации для Message мне бы очень понравилось, если бы фраза "REGISTER_MESSAGE_TYPE" могла автоматически стать ссылкой и указать на мою документацию для макроса. Например.

//! A cool message class
/*! 
   Users can inherit from this class to create their own cool messages.
   Just be sure to call REGISTER_MESSAGE_TYPE after your class definition!
*/
class Message
{
  virtual void doSomeStuff();
};

Возможно ли это?

Ответы

Ответ 1

См. Http://www.doxygen.nl/manual/index.html.

В разделе "Специальные команды" перечислены команды \def, а в разделе "Автоматическое создание ссылок" описано, что вы хотите связать с макросом.

Используйте \def для документирования макроса отдельно от объявления.
Используйте #MACRO(params) для автоматической ссылки на указанное определение макроса.