我有一个C++软件,可以使用不同的操作系统,平台和编译器进行编译.现在有时编译器会出现错误,例如这个错误,这意味着gcc版本4.6.4之前和4.7.3之前是不行的.现在我可以包含一个显示错误的单元测试(也许这个问题将揭示确实这就是我应该做的事情),但这是一项繁琐的工作:编译器错误有时难以重现并且将其转换为单元测试可能不会很容易......当你手头有平台和编译器时就是这样.
我正在寻找的是一个存储库,告诉我哪些版本的g ++,clang ++和msvc ++遭受了支持C++ 11的致命错误(我不是在谈论缺少的功能,当功能不存在时我会解决它们) .在构建系统中使用它们构建时,我会致命崩溃.不错的功能是,我甚至没有被迫发现一个禁止编译器的bug(所以我为自己节省了未来的麻烦).
这样的清单是否存在?
Mat*_*son 14
这可能不是您正在寻找的答案,但我相信处理这个问题的正确方法是使用白名单而不是黑名单.换句话说,有一个你知道可以工作的编译器列表,如果客户尝试使用与你测试过的版本不同的版本进行构建,你会发出一条警告消息,作为构建脚本的一部分,说明如下:
不支持此编译器,请参阅 http://www.example.com/list_of_supported_compilers.html以获取我们支持的编译器列表.如果您选择继续使用此编译器,请随意执行此操作,但如果您发现问题,请不要期望我们的技术支持提供全面支持.
我说这个的原因是:
任何足够大的软件(或硬件)产品都会有错误.您只能通过测试来证明您的软件是有效的.依赖于外部"版本中存在已知的错误以及编译器X这样的错误"将无法帮助您避免影响代码的错误.话虽如此,大多数编译器都经过了相当好的测试,因此您(通常)需要做一些相当不寻常/复杂的事情来使编译器失败.
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |