【发布时间】:2012-03-15 12:34:04
【问题描述】:
如何(在 GCC/“GNU C”中)声明一个指向 __attribute__((const)) 函数的函数指针?我的想法是,当编译器可以缓存上一次调用的返回值时,我希望编译器避免对通过函数指针调用的函数产生多次调用。
【问题讨论】:
-
从来没有这样做过,几乎睡着了去研究,但是尝试使用具有 const 属性并接受该指针作为参数的显式声明的函数的地址来包装调用。如果 gcc 可以确定指针地址本身和参数没有改变 - 它应该消除不必要的调用。
-
@Vlad:我也想过,但是 gcc 在我想要的情况下拒绝内联函数。最初我有一个这样的包装函数,但我删除了它以修复内联行为。如果有趣的话,有问题的函数是
((pthread_t (*)(void))0xffff0fe0)(Linux-ARM get-thread-pointer 函数)。 -
有趣的问题。贾斯汀的回答有没有达到预期的效果?
-
@Praxeolitic:是的。
标签: c gcc types function-pointers