我正在编写一个游戏,在其中许多不同的条件可能导致失败,例如图像或着色器加载失败,OpenGL无法获得有效上下文等。
在理想情况下,我希望使用退出代码来表示C语言中预期的非零失败条件。然而,有一些因素需要考虑:
- 使用非零退出代码时,
atexit()
不会被调用,这对我来说很不幸,因为我的程序清理是通过单个在main()
中注册的atexit()
处理的。 - 由于游戏具有不确定的运行时间,与批处理程序不同,实际上可能永远不会出现使用退出代码的实际情况。这并不像由Makefile调用的命令行图像转换器那样需要知道程序是否成功或失败,从而确定是否继续构建。可能性是,如果程序在运行时出现任何问题,例如缺少文件,那么这是我自己解决的问题,然后平稳进行。
在我的情况下,使用非零退出代码的利弊有哪些?
atexit
处理程序中,您应该仅放置操作系统无法为您清理的内容。 - datenwolf