天天看點

gcc編譯器__attribute__ 機制

__attribute__ 機制與連結腳本有關

  1. 對于函數而言,__attribute__用于把函數放進相關的資料段,使用*_start 與*_end調用之間的函數進行函數的逐個調用(放進來的函數不能有形參)

使用位置在分号;的前面

例子:

#define __define_initcall(level,fn,id) \
	static initcall_t __initcall_##fn##id __used \
	__attribute__((__section__(".initcall" level ".init"))) = fn
           

結果就是".initcall" level ".init"裡面放fn,也就是在編譯的時候,編譯器知道把fn放到".initcall" level ".init"這個段裡面,".initcall" level ".init"是在連結腳本裡面的,編譯器回到這裡找。

參考文章:

https://www.cnblogs.com/sky-heaven/p/8275303.html

https://blog.csdn.net/huasir_hit/article/details/77531942

繼續閱讀