Документирование макросов в C ++ с помощью Doxygen - PullRequest
19 голосов
/ 28 декабря 2010

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

Более конкретно, у меня есть некоторый обычный класс, называемый «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 Ответ

15 голосов
/ 28 декабря 2010

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

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

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

...