Мне нужно задокументировать две отдельные функции, которые из-за typedef, кажется, интерпретируются как одна и та же функция, поэтому документы для обеих объединены.

Вот очень упрощенный пример:

typedef int group;

typedef enum { INDIVIDUAL = 0, GROUP = 1, } type_to_process;    

/**************************************************************************//**
 *
 * @brief Individual function.
 *
 * @param[in] type     type to process
 * @param[in] p_int    individual number to process
 *
 *****************************************************************************/
void function(type_to_process type, int *p_int);

/****************************************************************************//**
 *
 * @brief Group function.
 *
 * @param[in] type      type to process
 * @param[in] p_group   group number to process
 *
 *****************************************************************************/
void function(type_to_process type, group *p_group);

Поскольку группа typedef привязана к int, doxygen считает эти две функции идентичными.

Есть ли способ, чтобы doxygen документировал их как отдельные функции?

Спасибо.

1
Mark S 14 Фев 2018 в 18:49

1 ответ

Лучший ответ

Doxygen следует правилам C ++, а правила C ++ говорят, что это одна и та же функция. Невозможно заставить Doxygen делать вид, что эти объявления предназначены для разных функций, так же как нет способа заставить C ++ делать вид, что эти объявления предназначены для разных функций.

Doxygen, вообще говоря, не позволяет лгать читателю документации.

Правильный способ справиться с этим - фактически следовать правилам перегрузки C ++:

struct process_individual{};
struct process_group{};

void function(process_individual, int *p_int);
void function(process_group, group *p_group);

Или еще лучше, просто дайте им разные имена, поскольку они на самом деле не являются перегрузкой друг друга. Или, что еще лучше, не используйте указатель для отдельного:

void function(int &integer);
void function(group *p_group);

Есть множество способов справиться с этим, и все они сводятся к тому, чтобы не пытаться использовать счетчики для различения функций с одинаковой сигнатурой.

0
Nicol Bolas 14 Фев 2018 в 19:42