一、gcc为函数提供了几种类型的属性,其中包含:构造函数(constructors)和析构函数(destructors),可带优先级。
使用类似下面的方式来指定这些属性:
static
void start(void) __attribute__ ((constructor));
static
void stop(void) __attribute__ ((destructor));
二、带有"构造函数"属性的函数将在main()函数之前被执行,而声明为"析构函数"属性的函数则将在main()退出时执行。
三、C语言测试代码。
代码语言:javascript复制#include <stdio.h>
__attribute__((constructor)) void load_file()
{
printf("Constructor is called.n");
}
__attribute__((constructor(100))) void load_file1()
{
printf("Constructor 100 is called.n");
}
__attribute__((constructor(102))) void load_file2()
{
printf("Constructor 102 is called.n");
}
__attribute__((constructor(99))) void load_file3()
{
printf("Constructor 99 is called.n");
}
__attribute__((destructor)) void unload_file()
{
printf("destructor is called.n");
}
int main(int argc, char **argv)
{
printf("this is function %sn", __func__);
return 0;
}
四、adb push 编译出来的bin文件到android设备上运行