我有一个问题问你。我需要确定我是否可以在 main() 函数结束之前或之后使用某些函数。我找不到 C 语言的一些例子。你能给我一些建议或例子吗?非常感谢。
问问题
3443 次
4 回答
8
C 中有一个atexit
函数(std::atexit
在 C++ 中),它注册了一个要在程序终止时调用的函数。
于 2013-05-10T13:19:24.997 回答
8
如果您使用的是 GCC,则可以创建构造函数/析构函数:
该
constructor
属性使函数在执行进入之前被自动调用main()
。同样,该destructor
属性会导致函数在main()
完成或被调用后自动exit()
调用。具有这些属性的函数对于初始化在程序执行期间隐式使用的数据很有用。
样本:
void __attribute__ ((constructor)) ctor() { printf("1"); }
void __attribute__ ((destructor)) dtor() { printf("3"); }
int main() { printf("2"); }
输出:
123
于 2013-05-10T13:24:18.130 回答
0
这个问题有很多解决方案,其中一些已经提供:
- 静态 CRT 初始化/终止(静态对象析构函数“钩子”)
- 重命名你的主要并用真正的主要包装它
- 使用 atexit() 注册一个钩子
目前尚不清楚您要做什么,甚至这个问题是否旨在“我可以这样做”还是“这样做是否安全”?你能澄清一下吗?
于 2013-05-10T13:25:25.720 回答