C语言__attribute__ ((constructor))和__attribute__ ((destructor))

2022-05-20 18:19:45 浏览数 (1)

一、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设备上运行

0 人点赞