如何使用GCC的纯属性?

问题描述 投票:0回答:1

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

假设我有以下代码:

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

这个功能可以被宣布为__attribute__((pure))吗?除了更改指向的结构的值之外,保证不执行任何操作。

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

c gcc
1个回答
6
投票

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

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

来自GCC documentation

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

© www.soinside.com 2019 - 2024. All rights reserved.