c++ - 卡在遗留 C++ IO 库和标准化 IO 库之间

标签 c++ exception-handling fstream

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

最佳答案

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

autotools 将生成一个名为 config.h 的文件,其中包含一组 #defines,指示您的环境中是否存在某些功能。 (在这种情况下,AC_CXX_EXCEPTIONS 可能是您想要的检查。)然后,只要配置脚本发现它们不是必需的。

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

关于c++ - 卡在遗留 C++ IO 库和标准化 IO 库之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7879393/

相关文章:

c++ - 当我尝试使用读取和写入时,为什么 fstream 无法正常工作?

(POD结构,POD类和POD)成员的c++隐式类成员初始化

c++ - 将 std::set<T> 连接到内存池

c++ - 使用 std::experimental::optional 实现列表

Android 应用程序在蓝牙连接时崩溃?

c++ - 重定向 C++ fstream

C++ - 从移动赋值运算符调用复制赋值

c# - InvalidCastException Dictionary<string, string> 使用 Exception.Data

java - 什么时候在代码中捕获 RuntimeExceptions?

c++ - 在读/写 fstream 上查找/写入某个位置时自动扩展文件大小