如何使用GCC的纯属性?

时间:2018-03-02 12:23:19

标签: c gcc

我知道存在其他问题,但我仍然无法解决这个问题。

假设我有以下代码:

struct point
{
    int x;
    int y;
};
void SetPoint(struct point *pt, int x, int y)
{
    pt->x = x;
    pt->y = y;
}

可以声明此功能__attribute__((pure))吗?除了更改指向的结构的值之外,保证什么都不做。

如果没有,有人可以解释原因吗?

1 个答案:

答案 0 :(得分:6)

纯函数不会从外部修改任何内容。修改指向成​​员是外部更改,因此在这种情况下不应使用该属性。

Pure应该用于“仅返回”功能(无副作用)

来自GCC documentation

  

纯函数除了返回值之外没有任何效果,它们的返回值仅取决于参数和/或全局变量