我的问题是无奈之后,实际上我最近研究了标准的C++ IO库。我是在Linux机器上开发的,所以一切都很好。由于我对文件io(file.exceptions(flags))使用了异常处理,因此GNU C++编译器的较早版本不支持该处理。实际的部署机器具有非常老的g++版本,可能是2.9x。我正在编写一个数据记录器应用程序,因为我编写了许多依赖于try-catch对的代码。我现在应该怎么办。我试图声明一个继承自std::exception的异常。有用。将fstream包装在头文件中是个好主意。如果是,我应该如何做,例如继承,还是只包装?

最佳答案

由于您已经在使用linux&gcc,因此开始使用GNU自动工具可能是一个好主意。解决此类可移植性问题是自动工具的核心目的之一。

自动工具将生成一个名为config.h的文件,该文件带有一组#defines,它们指示您的环境中是否存在某些功能。 (在这种情况下,AC_CXX_EXCEPTIONS可能是您想要的检查。)然后,只要配置脚本发现不需要它们,则可以使用#ifdef标记使预处理器排除专门为与旧编译器兼容而编写的代码。

第一次使用自动工具时,学习曲线会有些僵硬,但这是一次性的时间成本。它们将使您从事的每个 future 项目都更容易设置。您还需要检查目标机器是否支持自动工具,如果支持,则支持哪种版本的工具。

07-26 07:39