我是靠谱客的博主 丰富画板,最近开发中收集的这篇文章主要介绍__attribute__((constructor)) 修饰的函数在main函数之前执行,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


最近研究qemu,初始化的时候有类似的代码:


#define module_init(function, type)                                         
static void __attribute__((constructor)) do_qemu_init_ ## function(void) {  
    register_module_init(function, type);                                   
}

do_qemu_init_** 想必是模块的初始化了,但是却没有调用 do_qemu_init的地方,奇了怪了,为什么呢?


仔细看看这个函数,修饰符中包含了 __attribute__((constructor)),估计就是这个家伙干的!


写代码测试之:


#include <stdio.h>
#include <stdlib.h>


void static __attribute__((constructor)) before_main()
{
    printf("before mainn");
}

void static __attribute__((destructor)) after_main()
{
    printf("after mainn");
}

int main(int argc, char** argv)
{
    printf("hello world!n");
}


编译执行:

root@mothership:/home/source/test# gcc a.c -o a
root@mothership:/home/source/test# ./a
before main
hello world!
after main
root@mothership:/home/source/test#

果然是这样,

__attribute__((constructor)) 修饰的函数在main函数之前执行

__attribute__((destructor))  修饰的函数在main函数之后执行








最后

以上就是丰富画板为你收集整理的__attribute__((constructor)) 修饰的函数在main函数之前执行的全部内容,希望文章能够帮你解决__attribute__((constructor)) 修饰的函数在main函数之前执行所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部