#pragma no_side_effect(name[,name...]) |
可使用 no_side_effect 指示函数不更改任何持久状态。Pragma 声明了命名的函数不具有任何副作用。这意味着函数将返回仅依赖于传递参数的结果。此外,函数和后面的函数调用:
不读取或写入调用点的调用者中可视的程序状态的任何部分。
不执行 I/O。
不更改调用点不可视程序状态的任何部分。
编译器执行优化时可以使用该信息。
如果函数具有副作用,执行调用该函数的程序的结果是未定义的。
name 参数指定当前转换单元中函数的名称。Pragma 必须与函数在相同的作用域,并且必须在函数声明之后出现。pragma 必须在函数定义之前。
有关 pragma 如何将重载的函数名视为参数的更加详细的说明,请参见B.1.1 将函数作为 pragma 参数进行重载。