【发布时间】:2021-03-14 16:39:19
【问题描述】:
我想在程序关闭时删除可执行文件所在文件夹中的所有.txt文件。
要删除我使用system("del /s *.txt");的文件,但我想在程序关闭时这样做,所以我做了一个void函数
void deleteTxt() {
system("del /s *.txt");
}
我在main 函数中添加了atexit(deleteTxt()); 行,但编译器给出了错误:"void" incompatible with "void (__cdecl *)()"
我能做什么? 谢谢,祝你有美好的一天。
【问题讨论】:
-
atexit(deleteTxt());≠atexit(&deleteTxt); -
它是
atexit(&deleteTxt);。请注意,使用系统调用删除文件是一个坏主意(不可移植且无保证) -
如果您使用的是 Windows 特定的 API,您可以使用 CreateFile 和 TEMPORARY 和 DELETE 属性打开文件,并在其上调用 DeleteFile。当它的最后一个句柄关闭时,它将被删除,这将包括程序退出。但是,如果它被删除,则没有其他程序可以打开它,这可能会也可能不会。