[gcc] 宏:__COUNTER__

第一次看到这个gcc定义的宏,用途是在编译时获取一个唯一的代码(整数),从0开始;但是gcc的文档里没有对这个宏进行说明。

在内核代码里的使用:

/*
 * These macros help objtool understand GCC code flow for unreachable code.
 * The __COUNTER__ based labels are a hack to make each instance of the macros
 * unique, to convince GCC not to merge duplicate inline asm statements.
 */
#define annotate_reachable() ({						\
	asm volatile("%c0:\n\t"						\
		     ".pushsection .discard.reachable\n\t"		\
		     ".long %c0b - .\n\t"				\
		     ".popsection\n\t" : : "i" (__COUNTER__));		\
})

猜你喜欢

转载自blog.csdn.net/qq_36428903/article/details/132410271
gcc