如何在C语言中使用constructor和destructor,gcc环境

转载 2012年03月22日 12:25:13

使用这个功能,你就可以在main函数执行之前,和main函数退出之后,执行你自己想要的操作。

示例:


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




static void start (void)  __attribute__ ((constructor));
static void stop  (void)  __attribute__ ((destructor));




int main (int argc, char* argv[])
{
printf ("%s is starting...\n", argv[0]);
printf ("start == %p\n", start);
printf ("stop  == %p\n", stop);


printf ("%s is stopping...\n", argv[0]);
return 0;
}


void start (void)
{
printf ("Hello, world\n");
}


void stop (void)
{
printf ("Goodbye!\n");
}



运行结果:

 Hello, world
../bin/constructor_destructor is starting...
start == 0x804845a
stop  == 0x804846e
../bin/constructor_destructor is stopping...
Goodbye!

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

最近研究qemu,初始化的时候有类似的代码: #define module_init(function, type) ...
  • u010640288
  • u010640288
  • 2015年07月24日 17:45
  • 1559

gcc中的constructor属性和destructor属性

constructor属性可以使函数在main()函数之前执行,destructor属性会让函数在main()函数完成或调用exit()之后被执行。这些属性可以用来在程序运行之前初始化所需的数据,非常...
  • moonvs2010
  • moonvs2010
  • 2013年09月14日 22:52
  • 2043

如何在C语言中使用constructor和destructor,gcc环境

使用这个功能,你就可以在main函数执行之前,和main函数退出之后,执行你自己想要的操作。 示例: #include #include static void s...
  • skyofcai
  • skyofcai
  • 2012年03月22日 12:25
  • 514

C语言中的构造函数

C++和JAVA中有构造函数,其实C语言中也早就有了
  • miaohongyu1
  • miaohongyu1
  • 2014年05月15日 17:28
  • 2126

GCC的__attribute__ ((constructor))和__attribute__ ((destructor))

gcc允许为函数设置__attribute__ ((constructor))和__attribute__ ((destructor))两种属性,顾名思义,就是将被修饰的函数作为构造函数或析构函数。程...
  • jasonchen_gbd
  • jasonchen_gbd
  • 2015年03月08日 22:21
  • 1736

C 语言中的constructor与destructor

最近在看代码的时候碰到一个问题,这项目中有一个全局变量,里面有许多系统用的属性。但是一直找不到它在哪里被赋值。后来跟了代码才发现在系统开始之前已经有一个constructor将这个东西初始化好。  ...
  • xiaofei125145
  • xiaofei125145
  • 2016年09月20日 16:24
  • 791

Android C语言_init函数和constructor属性及.init/.init_array节探索

了解C语言的程序猿都知道有两种方法可以让一部分代码在so或可执行文件被加载的时候先于其它任何函数执行,一种是定义一个void _init(void)函数,另一种是在函数后面声明constructor属...
  • beyond702
  • beyond702
  • 2016年12月13日 11:42
  • 1414

constructor initializer list

使用constructor initializer list  初始化 基类的成员变量、子对象的成员变量、和成员变量。 // wave_.cpp : Defines the entry ...
  • ruanjianruanjianruan
  • ruanjianruanjianruan
  • 2015年06月02日 17:46
  • 534

constructor和destructor概述(c++ only)

原文请参考http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=/com.ibm.xlcpp8l.doc/l...
  • magicpang
  • magicpang
  • 2009年10月28日 14:36
  • 10234

构造函数(Constructor)析构函数(Destructor)怎么用?

构造函数是创建类对象时必须要调用的函数,析构函数是当对象脱离作用域(eg:类的函数调用完毕)时必须要调用的函数。 即使不显式声明,系统也会创建一个缺省的构造函数和析构函数,它们只是保证程序可执行,并不...
  • u010218909
  • u010218909
  • 2016年01月22日 00:16
  • 472
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在C语言中使用constructor和destructor,gcc环境
举报原因:
原因补充:

(最多只允许输入30个字)