如何在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!

相关文章推荐

c++: 构造函数(constructor)与各种眼花缭乱的初始化(initialization)

本文是作为下一篇文章的前置。首发地址:http://blog.csdn.net/madongchunqiu/article/details/22325357 【注:灰色文字,不耐可略过。】 话说我...

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

最近研究qemu,初始化的时候有类似的代码: #define module_init(function, type) ...

类的三个特殊成员Copy Constructor、Copy-Assignment Operator、Destructor重载与使用

今天看《C++ Primer》的13.1节——Copy, Assign, and Destroy 被这几个玩意儿弄得晕得不行:   ◆   Copy Constructor   ◆   The ...

从零开始搭建环境编写操作系统 AT&T GCC (三)引入C语言

搁置了几天,继续我们的操作系统,今天我们的主题是引入C语言,毕竟有了C语言这个工具,开发就便捷了很多,我们C语言依然使用GCC编译器,现在我们有几个事情没有完成,中断没有打开,段选择子没有设置,先把中...

[编译环境][gcc]16位程序中汇编代码与C语言代码的混合编译

在实模式下,默认是的16位数据模式,但可以允许采用32位数据模式。当希望采用32位数据模式时,需要手动在指令前添加0x66来切换数据模式。在汇编代码中,call和ret生成的指令字节都不带0x66,也...

用editplus+gcc搭建C语言开发环境

本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。一、配置gcc 1. 首先需要下载MinGW ,MinGW的官网:http://www.mingw.org/ 。如果不想...
  • And_w
  • And_w
  • 2016年01月15日 19:39
  • 414

linux下GCC编译环境中二叉树遍历、C语言实现以及调试过程中段错误

最近一直在学习数据结构准备面试,昨天晚上看到了二叉树,在网上查了一些资料以后照猫画虎的写了一个二叉树遍历的程序,主要是为了消化递归构建二叉树和遍历的过程,调试过程中也发现了不少问题。 二叉树概念属性...

【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)

阿里云服务器实战 安装gcc,配置vim, 配置C语言开发环境 安装tomcat,jdk部署J2EE网站...

C语言开发环境安装——Codeblocks&GCC

开博第一篇,啰嗦一下。 今天开始学C语言,不是搞计算机的无基础无经验,只是业余兴趣爱好,过去学东西都是不记录,每当用时都要重新开始学一遍,让人很头疼,现在在博客上记录一下学习的过程,防止以后忘记了。...
  • zylmp
  • zylmp
  • 2016年10月21日 15:21
  • 2909

constructor and destructor

::= C1   # complete object constructor                  ::= C2   # base object constructor        ...
  • lbbb
  • lbbb
  • 2011年08月09日 10:09
  • 212
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在C语言中使用constructor和destructor,gcc环境
举报原因:
原因补充:

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