我正在编写一些代码,其中有许多简单的纯函数可以被调用很多。如果这些函数得到优化以便不经常调用,那将是非常安全的。
目前我正在使用gcc作为我的编译器,我想知道是否有可行的方法:
int foo(int) __attribute__ ((pure))
关于pure关键字的信息可以在这里找到: http://www.ohse.de/uwe/articles/gcc-attributes.html#func-pure
如果pure关键字不可用,我将如何实现类似的东西?
答案 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)
我认为可移植的方法是内联函数并希望编译器能够弄清楚其余部分。