Doxygen,当参数 typedef 使签名相同时如何拆分函数文档?
Doxygen, how to split function documentation when parameter typedef makes signatures identical?
我必须记录两个单独的函数,由于 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 将它们记录为单独的函数?
谢谢。
Doxygen遵循C++的规则,C++的规则说它们是同一个函数。没有办法让 Doxygen 假装这些声明用于不同的函数,就像没有办法让 C++ 假装这些声明用于不同的函数一样。
Doxygen,一般来说,不允许你谎言到文档的reader。
处理这个问题的正确方法是实际遵循 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);
有很多方法可以解决这个问题,它们都归结为不尝试使用枚举器来区分具有相同签名的函数。
我必须记录两个单独的函数,由于 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 将它们记录为单独的函数?
谢谢。
Doxygen遵循C++的规则,C++的规则说它们是同一个函数。没有办法让 Doxygen 假装这些声明用于不同的函数,就像没有办法让 C++ 假装这些声明用于不同的函数一样。
Doxygen,一般来说,不允许你谎言到文档的reader。
处理这个问题的正确方法是实际遵循 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);
有很多方法可以解决这个问题,它们都归结为不尝试使用枚举器来区分具有相同签名的函数。