代码中可同时有多个 constructor 和 destructor
__attribute__((constructor)):被修饰的函数在main函数之前调用
__attribute__((destructor)):被修饰的函数在main函数之后调用
__attribute__((constructor(priority))):被修饰的函数在main函数之前调用,数字越小表示优先级越高,则越优先执行
__attribute__((destructor(priority))):被修饰的函数在main函数之后调用,数字越小表示优先级越高,则越靠后执行。
函数声明方式:
void __beforeInit() __attribute__((constructor))
静态函数声明方式:
static void __beforeInit() __attribute__((constructor))
优先级函数声明方式:
void __beforeInit() __attribute__((constructor(100)))
注:若不加优先级参数则为最低优先级,priority范围要>100,最高可以达到65535。优先级只在单个目标文件中有作用,在不同的目标文件,比如不同动态库文件之间,没有作用。