GCC具有pure和const属性,其中const实际上用于真正的纯函数(纯粹用于
idempotent functions which are also side-effect free).
那么如何使用const-attribute声明和定义一个函数呢?
解决方法
例:
// Declaration: int square (int x) __attribute__ ((const)); // Definition: int __attribute__ ((const)) square (int x) { return x*x; }
所有属性的语法几乎相同:__ attribute __((< attribute-name>))或__attribute __((< attribute-name>(< attribute-options>))).从您链接到的文档中引用:
The keyword
__attribute__
allows you to specify special attributes when making a declaration. This keyword is followed by an attribute specification inside double parentheses.
06001
所以你需要的语法方面,使用const,是纯粹的变为const:
06002
正如评论中所指出的:如果你在定义中使用它,那么你需要将__attribute __((const))放在不同的位置:
int square (int) __attribute__ ((const)) { ... } // doesn't work int __attribute__ ((const)) square (int) { ... } // does work
但是const和pure属性只有在应用于外部声明时才有用,所以这应该不是问题.如果定义是可见的,GCC通常能够在没有您帮助的情况下确定该函数是否可以被视为const / pure.