Doxygen 参数[out]与氧气中返回值之间的差异?

Doxygen 参数[out]与氧气中返回值之间的差异?,doxygen,Doxygen,和在强氧中有什么区别?它们似乎都记录了函数的输出/返回。差异是由于没有返回值且只有param[out]有效的void函数造成的吗?out参数与返回值不同。以C语言为例: /** *\param[in]val值计算基于。 *\param[out]变量函数输出写入此变量。 * *\不返回任何内容 */ void modify_值(int val,int*变量) { val*=5; int working=val%44; *变量=工作; } 该函数不返回任何内容,但变量指向的值发生了更改,因此我们将

和在强氧中有什么区别?它们似乎都记录了函数的输出/返回。差异是由于没有返回值且只有
param[out]
有效的
void
函数造成的吗?

out参数与返回值不同。以C语言为例:

/**
*\param[in]val值计算基于。
*\param[out]变量函数输出写入此变量。
*
*\不返回任何内容
*/
void modify_值(int val,int*变量)
{
val*=5;
int working=val%44;
*变量=工作;
}
该函数不返回任何内容,但
变量
指向的值发生了更改,因此我们将其称为输出参数。它表示函数的“输出”,因为我们希望函数以某种方式修改它<另一方面,code>val是一个“输入”参数,因为它没有被修改(事实上,从函数调用方的角度来看,它不能被修改,因为它是作为值传递的)

下面是一个更有用、更现实的示例:

typedef结构数据{
int i;
int j;
...
}数据;
/**
*\param[in]val初始化数据的参数。
*\param[out]应存储新对象的dat数据指针。
*
*\如果对象已创建,则返回True;如果未创建,则返回false
*(即,我们的内存不足)
*/
bool创建数据(int val,数据**dat)
{
数据*新数据;
newdata=(数据*)malloc(sizeof(数据));
if(newdata==NULL)
{
*dat=NULL;
返回false;
}
newdata->i=val;
*dat=新数据;
返回true;
}
在这种情况下,我们在函数中构造了一些复杂的对象。我们返回一个简单的状态标志,让用户知道对象创建成功。但是我们使用out参数传递新创建的对象


(当然,这个函数很容易返回指针。有些函数更复杂!)

作为一个简单的答案,
[out]
参数只用于通过参数返回的结果,而不是返回值。有一个具有返回值和可选返回数据的函数是非常合理的,例如:我刚刚编写的函数具有签名:

  /**
  Determine UTF type of a file. 
  Unless a UTF8 file has a BOM, it is regarded as unknown.

  @param [in] path Path to file suitable for ifstream
  @param [out] bomWasFound optional return flag to indicate a BOM was found, really only useful for UTF8
  @return an enum indicating type, default utf_unknown
  */
  UtfType CheckFileType(const std::string& path, bool* bomWasFound=0);

很好的解释。在极少数情况下,这甚至可以在Java中完成,在Java中,对象由输出值填充。