禁止函数被优化掉

例子

#if (GCC_VERSION > 4000)
#define DEBUG_FUNCTION __attribute__ ((__used__))
#define DEBUG_VARIABLE __attribute__ ((__used__))
#else 
#define DEBUG_FUNCTION
#define DEBUG_VARIABLE
#endif

DEBUG_FUNCTION void
debug_bb (basic_block bb)
{
  dump_bb (bb, stderr, 0);
}

技巧

上面的例子是gcc的源码。使用gcc的扩展功能——函数属性__attribute__ ((__used__)),可以指定该函数是有用的,不能被优化掉。

详情参见gcc手册

贡献者

xmj