Chinaunix首页 | 论坛 | 博客
  • 博客访问: 630486
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 12:41:57

在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语言标准中的函数。






阅读(628) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~