有没有可移植的gcc的__attribute __(纯)?

时间:2010-09-30 05:27:53

标签: c++ gcc portability

我正在编写一些代码,其中有许多简单的纯函数可以被调用很多。如果这些函数得到优化以便不经常调用,那将是非常安全的。

目前我正在使用gcc作为我的编译器,我想知道是否有可行的方法:

int foo(int) __attribute__ ((pure))

关于pure关键字的信息可以在这里找到: http://www.ohse.de/uwe/articles/gcc-attributes.html#func-pure

如果pure关键字不可用,我将如何实现类似的东西?

4 个答案:

答案 0 :(得分:7)

不,没有。

答案 1 :(得分:4)

#ifdef __GNUC__
#define __pure __attribute__((pure))
#else
#define __pure
#endif

在需要时使用__pure

答案 2 :(得分:4)

从C ++ 11开始,您可以将standardized attribute syntax与GCC特定的属性一起使用:

[[gnu::pure]]
int foo(int)

从C ++ 17开始,这保证在任何编译器上都可以使用,因为如果他们不认识[[gnu::pure]],则必须无误地忽略它。

答案 3 :(得分:2)

我认为可移植的方法是内联函数并希望编译器能够弄清楚其余部分。