我知道存在其他问题,但我仍然无法解决这个问题。
假设我有以下代码:
struct point
{
int x;
int y;
};
void SetPoint(struct point *pt, int x, int y)
{
pt->x = x;
pt->y = y;
}
这个功能可以被宣布为__attribute__((pure))
吗?除了更改指向的结构的值之外,保证不执行任何操作。
如果没有,有人可以解释原因吗?
纯函数不会从外部修改任何内容。修改指向成员是外部更改,因此在这种情况下不应使用该属性。
Pure应该用于“仅返回”功能(没有副作用)
纯函数除返回值外没有任何影响,它们的返回值仅取决于参数和/或全局变量