为什么即使我不在Visual Studio中包含“ exception”标头,也可以使用std :: exception?

时间:2018-11-08 16:00:26

标签: c++ visual-studio c++-standard-library

正如标题所述,为什么我可以在没有std::exception的视觉工作室中使用#include <exception>? 在Visual Studio中还有更多这样的例子吗?

是的,我忘了提到我#include <iostream>。抱歉。

1 个答案:

答案 0 :(得分:0)

答案是您要通过另一个标头包含它。

该标准规定您不应依赖该行为,除非它是“明显的”,例如std::istream依赖于std::ios,因此<istream>必须包含{{1} },但是对于如何确保包含适当的标头并没有提出任何建议。

通过代码检查可以很容易地维护一个有用的示例,但是当您有多个项目包含文件时,每个文件都将其依赖系统包含在其中,那么就没有可扩展的答案,除非包括所有系统头文件在单个预编译模块中。

因此,始终存在将代码移植到新库实现时会触发需要添加一些缺少的包含的风险。请注意,这些添加的包含将可以在原始系统上安全使用。

这是我们作为开发人员必须忍受的东西。