Doxygen,当参数typedef使签名相同时,如何拆分函数文档?

时间:2018-02-14 15:49:45

标签: c++ doxygen

我必须记录两个单独的函数,由于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 个答案:

答案 0 :(得分:0)

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);

有许多方法可以解决这个问题,而且它们都归结为不使用枚举器来区分具有相同签名的函数。