C -在main()结束之前/之后运行函数
C - run function before/after main() ended
我有一个问题要问你。我需要找出我是否可以在main()函数结束之前或之后使用一些函数。我找不到C语言的例子。你能给我一些建议或例子吗?非常感谢。
如果您正在使用GCC,您可以创建构造函数/析构函数:
示例:
constructor
属性导致函数在执行进入main()
之前被自动调用。同样,destructor
属性使函数在main()
完成或exit()
被调用后自动被调用。具有这些属性的函数对于初始化在程序执行期间隐式使用的数据非常有用。
void __attribute__ ((constructor)) ctor() { printf("1"); }
void __attribute__ ((destructor)) dtor() { printf("3"); }
int main() { printf("2"); }
输出:123
C语言中有atexit
函数(c++中有std::atexit
函数),它注册了一个函数,在程序终止时调用。
您可以使用atexit()来表示正常的程序退出,使用信号处理程序(在UNIX中)来表示异常退出。
GCC也有构造函数和析构函数属性,可以做你想做的事情,但这不是普通的C或c++。
这个问题有很多解决方案,其中一些已经提供了:
- 静态CRT初始化/终止(静态对象析构函数)"钩")
- 重命名main并使用真正的main包
- 用atexit()注册钩子
不清楚你想做什么,甚至不清楚这个问题是想问"我能做吗?"还是"这样做安全吗?"你能解释一下吗?
相关文章:
- 为什么在popback()操作之后,它仍然打印完整的矢量
- C++ 如果在 if 为 true 之后运行,为什么还会这样做
- 在SIGABRT c ++信号之后继续运行程序
- 在 fork() 之后,如何在 for() 循环中继续运行 execve()
- C++循环在 EOF 之后继续运行时这样做
- 在c++中,未使用的"new long"循环之后的所有内容都运行得更快
- Visual C++Express.exe在第一次执行之后再次运行
- std系统在转到下一行c++之后运行
- 用于在检测到正方形之后运行命令的c++算法
- 当shared_ptr超出范围时,c++崩溃..在成功运行至少100000次之后
- 如何在所有测试用例 BOOST c++ 之后运行函数
- 在MAKE之后,如何运行一个不可执行的文件
- 如何创建一个C/ c++程序,生成XML并在之后运行DOS命令
- __finally应该在EXCEPTION_CONTINUE_SEARCH之后运行
- C -在main()结束之前/之后运行函数
- Std::async保证在return语句之后运行
- 为什么不在pop之后运行task并返回true呢?
- 如何在命令之后保持shell运行
- 运行代码时是否可以在main()之后调用其他方法/指令
- 如何确保 CMAKE 代码将在子目录之后运行