atexit()函数能否调用带参数的函数

加盾男爵 2017-07-11 12:45:58
RT
比如一个函数

void putText()
{
cout<<"Hello World";
}

用atexit()调用时可以
atexit(putText)

那如果一个函数是

void putText(const string* str)
{
cout<<str;
}

这种有参数的函数,能否通过atexit()函数调用,如果可以改怎么调用(参数怎么传入)?
...全文
556 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
战在春秋 2017-07-12
  • 打赏
  • 举报
回复
int atexit(  
   void (__cdecl *func )( void )  
);
这是atexit函数的原型说明,不能传递有参数的函数给atexit。 一个解决办法是使用全局变量。 以题目为例,可以在文件头部定义:
const string* str
赵4老师 2017-07-11
  • 打赏
  • 举报
回复
不要企图优雅的结束(因为这是不可能办到的) 而要在烂的不能再烂的摊子上也能重整河山! http://bbs.csdn.net/topics/390787357
jklinux 2017-07-11
  • 打赏
  • 举报
回复
可以用on_exit函数代替atexit

#include <stdio.h>
#include <stdlib.h>

void func1(int status, void *arg);
int main(void)
{
	int *p = malloc(sizeof(int));
	*p = 7788;

	on_exit(func1, p);

	return 88;
}

void func1(int status, void *arg)
{
	printf("status = %d\n", status);
	
	printf("num = %d\n", *(int *)arg);

}

65,212

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧