我有一个问题给你。 我需要找出如果我可以使用main()函数结束之前或之后的某些功能。我找不到一些C语言的例子。 你能给我一些建议或例子吗?非常感谢。C - 运行之前/之后main()结束
1
A
回答
7
如果使用GCC,你可以创建construtors/destructor功能:
的
constructor
属性使执行进入main()
之前被自动调用的函数。同样,destructor
属性会导致函数在main()
完成或exit()
被调用后自动调用。具有这些属性的函数对于初始化程序执行过程中隐式使用的数据非常有用。
样品:
void __attribute__ ((constructor)) ctor() { printf("1"); }
void __attribute__ ((destructor)) dtor() { printf("3"); }
int main() { printf("2"); }
输出:
123
+1
+1。这里是一个例子:http://www.geeksforgeeks.org/functions-that-are-executed-before-and-after-main-in-c/ – 2013-05-10 13:26:21
7
C中有atexit
函数(在C++中为std::atexit
),它注册了一个在程序终止时被调用的函数。
0
您可以使用atexit()来正常退出程序,一个信号处理程序(在UNIX中)用于异常退出。
海湾合作委员会也有构造函数和析构函数function attributes做你想做的,但这不是香草C或C++。
0
有许多解决问题的对策,其中一些已经提供:
- 静态CRT intitialization /终止(静态对象析构函数 “钩子”)
- 重命名你的主,并与实际主
- 包裹它注册使用atexit()
目前尚不清楚你想要做什么挂钩,甚至是否有问题,打算:“我可以做它“还是”安全地做到这一点“?你能澄清吗?
相关问题
- 1. 下一个语句在前一个结束之前运行
- 2. 解析错误之前“结束行”
- 3. 在main()之前执行代码()
- 4. 执行main之前的分段错误
- 5. IOS在main()之前执行什么?
- 6. java.sql.SQLException:结果集开始之前/之后
- 7. c#while循环在结束之前完成当前循环
- 8. 在加入所有线程之前main()端可以运行吗?
- 9. 在Rails初始化器运行之前运行rspec“之前”块
- 10. 线在vue.js功能之前先前执行结束
- 11. 流在程序结束之前关闭
- 12. 多行之前和之后的Mysql
- 13. 在第n行之前和之后总结熊猫
- 14. 标题的constroctor在它应该结束之前结束
- 15. 声明变量之前/之后运行脚本?
- 16. Flex:在构建之前/之后运行脚本?
- 17. 在给定步骤之后,钩子运行之前的黄瓜?
- 18. 如果Activity在onCreate()之后但在onStart()之前结束,那么什么叫onStop()?
- 19. 之前和之后的Git行号
- 20. Flatiron Union“之后”功能在“之前”功能之前执行?
- 21. 在Perl脚本结束之前总是执行一些代码
- 22. 在分支进程之后执行不会返回结果在程序结束之前
- 23. 做一些功能结束之后
- 24. 析构函数在C#中完成其任务之前结束?
- 25. 在结束C#任务之前等待事件解决
- 26. 之前堆栈溢出异常的main()
- 27. 我应该在手动结束之前让javascript函数运行多久?
- 28. 如何在继续执行代码之前等待AnimationDrawable结束?
- 29. 在Spark Streaming中的微批次结束之前执行操作
- 30. Java主类在执行线程之前结束
你在写什么平台? – Joe 2013-05-10 13:19:09
你能不能把代码放在'main'的末尾?我们需要更多信息来提供真正有用的解决方案。另外,你是否需要C++或C,因为在C++中你可以使用构造函数和析构函数。 – 2013-05-10 13:20:34
只需将'main()'重命名为eg oldmain()'和新的'main()'''oldmain()'等函数即可。 – pmg 2013-05-10 13:21:21