在c++中可以使用在头文件中定义对象的方式在main函数之前做一些动作。如:
- #include <iostream>
-
-
using namespace std;
-
-
class init{
-
public:
-
init()
-
{
-
cout<<"before main!"<<endl;
-
}
-
~init()
-
{
-
cout<<"after main!"<<endl;
-
}
-
};
-
-
init init;
-
-
int main()
-
{
-
cout<<"main"<<endl;
-
return 0;
-
}
但是在C语言中没有标准说,在main之前的动作要怎样做。所以,gcc给出了扩展。如:
- #include <stdio.h>
-
static void __init_mod(void) __attribute__ ((constructor));
-
static void __init_mod(void) {
-
printf("before main!\n");
-
}
-
-
static void dest_mod(void) __attribute__((destructor));
-
static void dest_mod(void)
-
{
-
printf("after main!\n");
-
}
-
-
int main()
-
{
-
printf("main\n");
-
return 0;
-
}
另外退出时想执行的动作也可以使用atexit函数,这个函数时C语言标准中的函数。
阅读(642) | 评论(0) | 转发(0) |