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