Chinaunix首页 | 论坛 | 博客
  • 博客访问: 320221
  • 博文数量: 43
  • 博客积分: 1044
  • 博客等级: 准尉
  • 技术积分: 658
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-20 14:56
个人简介

人法地,地法天,天法道,道法自然。

文章分类

全部博文(43)

文章存档

2019年(1)

2013年(3)

2012年(15)

2011年(24)

分类: C/C++

2011-06-17 10:45:53

在c++中可以使用在头文件中定义对象的方式在main函数之前做一些动作。如:
  1. #include <iostream>

  2. using namespace std;

  3. class init{
  4.     public:
  5.     init()
  6.     {
  7.         cout<<"before main!"<<endl;
  8.     }
  9.     ~init()
  10.     {
  11.         cout<<"after main!"<<endl;
  12.     }
  13. };

  14. init init;

  15. int main()
  16. {
  17.     cout<<"main"<<endl;
  18.     return 0;
  19. }
但是在C语言中没有标准说,在main之前的动作要怎样做。所以,gcc给出了扩展。如:
  1. #include <stdio.h>
  2. static void __init_mod(void) __attribute__ ((constructor));
  3. static void __init_mod(void) {
  4.     printf("before main!\n");
  5. }

  6. static void dest_mod(void) __attribute__((destructor));
  7. static void dest_mod(void)
  8. {
  9.  printf("after main!\n");
  10. }

  11. int main()
  12. {
  13.     printf("main\n");
  14.     return 0;
  15. }
另外退出时想执行的动作也可以使用atexit函数,这个函数时C语言标准中的函数。






阅读(2449) | 评论(0) | 转发(2) |
0

上一篇:python与C的类似之处

下一篇:命令行參數

给主人留下些什么吧!~~