c – 如何在gcc中声明和定义纯函数?

前端之家收集整理的这篇文章主要介绍了c – 如何在gcc中声明和定义纯函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
GCC具有pure和const属性,其中const实际上用于真正的纯函数(纯粹用于 idempotent functions which are also side-effect free).

那么如何使用const-attribute声明和定义一个函数呢?

编辑:我对真正的纯函数感兴趣,使用const属性声明的函数,而不是使用pure-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.

原文链接:https://www.f2er.com/c/117049.html

猜你在找的C&C++相关文章