2016-12-19 12 views
2

Рассмотрим следующий C++ декларации макроса:Doxygen краткое описание внутри макроподстановкам

#define DECLARE_OBJECT_HANDLE(x) \ 
typedef struct x##HandleTag *x##Handle; \ 
typedef struct x##Handle *P##x##Handle 

Я хочу, чтобы отметить свою вторую декларацию указателя с некоторыми комментариями Doxygen. В идеале я хотел бы, чтобы второй дескриптор имел ссылку на первую, только с кратким описанием, в котором говорится, что это указатель на этот тип.

Я изменил мой макрос:

#define DECLARE_OBJECT_HANDLE(x) \ 
typedef struct x##HandleTag *x##Handle; \ 
/** 
* \brief Pointer to x##Handle. 
*/ \ 
typedef struct x##Handle *P##x##Handle 

Я был очень удивлен, когда я узнал, что это как-то работает! К сожалению, есть дополнительная секция для каждого typefef с каким-то странным характером:

enter image description here

Я действительно не люблю нижнюю часть, потому что у меня нет ничего больше, чтобы сказать об этом. Является ли это ошибкой в ​​doxygen, что он создает дополнительный раздел, когда я только просил краткое описание?

Есть ли способ предотвратить это?

PS: Я использую doxygen версию 1.8.12 на Window 8.1 64-bit.

+1

Этот странный символ является маркером из неупорядоченного списка. Вы пробовали пропустить '*' перед '\ brief' doxycommand? –

+0

@ Torbjörn Спасибо, это сработало! У вас есть объяснение, почему это происходит или это просто дикая догадка? У меня нет большого опыта работы с doxygen – Gotcha

+0

Это было образованное предположение, поскольку звездочка в начале строки указывает на неупорядоченный список в Markdown. Вы можете выяснить, действительно ли это происходит, когда вы отключите поддержку Markdown в своем Doxyfile. Тогда вы можете сообщить об ошибке для разработчиков Doxygen. –

ответ

1

Как было отмечено в комментариях, сверхъестественный характер, я имел в виду точка пуля неупорядоченный список.

Я задал этот вопрос по списку развития кислорода, но никто не ответил.

Решение:

опустить * перед \brief doxycommand

PS: Оригинальный код работает везде вне макроподстановкам.

0

Это будет немного сложно для doxygen, чтобы получить правильный поток в случае смешивания, определяет, комментирует и вводит typedefs. Может быть, следующее дает некоторые намеки/идеи (как это не 100% ясно, что вы пытаетесь достичь):

/** Handle */ 
#define HT(x) \ 
typedef struct x##HandleTag *x##Handle 

/** Pointer to #HT(x) */ 
#define PHT(x) \ 
typedef struct x##Handle *P##x##Handle 

/** Doing both */ 
#define DECLARE_OBJECT_HANDLE(x) \ 
HT(x); \ 
PHT(x) 
+0

Я пытался заставить вашу идею работать, но вложенные макросы не работали для меня. Я хотел объявить как непрозрачный указатель на какую-то структуру, так и в то же время объявить указатель на нее, который имеет только краткое описание. Однако по неизвестной причине было более чем краткое описание (пуля для списка). Причина, по-видимому, в том, что я не поставил ключевое слово \ short в первой строке, но была добавлена ​​дополнительная звездочка, которая была интерпретирована как начало списка. Это разница между макросами и обычным кодом, где я могу поместить \ short команду на отдельной строке с правильным поведением. – Gotcha

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

  • Нет связанных вопросов^_^