C++ --- 写个函数在main函数执行前先运行

Posted Overboom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ --- 写个函数在main函数执行前先运行相关的知识,希望对你有一定的参考价值。

这里介绍两种方法:
1.使用attribute关键字,声明constructor和destructor函数(gcc中,注意:vc中不支持attribute)
2.利用全局对象的构造函数会在main函数之前执行的特点

#include <iostream>
using namespace std;

//方法1. 使用attribute关键字,声明constructor和destructor函数
__attribute((constructor))void before_main()
{
        printf("%s\\n", __FUNCTION__);
}

__attribute((destructor)) void after_main()
{
    printf("%s\\n",__FUNCTION__);
}

//方法二:全局对象的构造函数会在main函数之前执行
class Test{

public:
        Test(string s)
        {
                str.assign(s);
                cout << str << ":A构造" <<endl;
        }
        ~Test()
        {
                cout << str << ":A析构" <<endl;
        }

private:
    string str;

};

Test test_before_main("global");

int main(int argc, char** argv)
{
        cout << "main function." <<endl;
		return 0;
}

编译输出结果:

以上是关于C++ --- 写个函数在main函数执行前先运行的主要内容,如果未能解决你的问题,请参考以下文章

c++ 让main函数循环运行大家都是怎么做的?

C、C++、Java、C# 中的 main()

C++语言怎么在main函数执行之前执行一段代码

C++,怎么让程序模拟用户输入指令,并自行回车以执行该指令(不是写个输出函数只做样子)?

main函数执行以前还会执行啥代码

多玩YY语音的面试题:C++中如何在main()函数之前执行操作?