是否可以将函数声明为pure
或const
(使用GCC属性),
使用返回参数? (其中参数用于返回值)。
例如:
void mid_v3_v3v3(float r_out[3], v0[3], v1[3])
{
r_out[0] = (v0[0] + v1[0]) * 0.5f;
r_out[1] = (v0[1] + v1[1]) * 0.5f;
r_out[2] = (v0[2] + v1[2]) * 0.5f;
}
除了r_out
之外,这个函数是const
,有没有办法将参数标记为返回值,否则将函数视为const
?
请参阅: https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Function-Attributes.html
答案 0 :(得分:1)
您自己的链接部分回答了这个问题。关于const:
除了参数之外,许多函数不检查任何值,除了返回值之外没有任何效果。基本上这只是比下面的纯属性稍微严格的类,因为不允许函数读取全局内存。
请注意,具有指针参数并检查指向的数据的函数不能声明为const。同样,调用非const函数的函数通常不能是const。 const函数返回void是没有意义的。
纯文档实际上是错误的和自相矛盾的;它说该函数只能访问它的参数和/或全局变量,但是然后给出strlen
(它访问其参数指向的成员)作为例子。
无论如何,对于你的“返回参数”用法,我认为这些方法中的任何一种都不可行。但是,你可以做的是使用一个返回包含结果数组的结构的函数;那么纯属性应该适用(假设示例,而不是文本,纯粹是正确的。)