gpt4 book ai didi

c++ - 用于 C++11 支持的错误编译器版本存储库

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:23 25 4
gpt4 key购买 nike

我有一个 C++ 软件,可以使用不同的操作系统、平台和编译器进行编译。现在有时编译器有错误,例如例如this one ,这意味着 4.6.4 之前和 4.7.3 之前的 gcc 版本是不行的。现在我可以包括一个展示错误的单元测试(也许这个问题会揭示确实那是我应该做的)但这是一项乏味的任务:编译器错误有时很难重现和转变进行单元测试也可能并不容易……而这正是您手头有平台和编译器的时候。

我正在寻找的是一个存储库,它告诉我哪些版本的 g++、clang++ 和 msvc++ 存在支持 C++11 的 fatal error (我不是在谈论缺少的功能,当功能不存在时我工作在他们旁边)。在构建系统中使用它们构建时,我会发生致命崩溃。一个不错的功能是,我什至不会被迫遇到一个错误来禁止编译器(所以我正在为自己省去 future 的麻烦)。

是否存在这样的列表?

最佳答案

这可能不是您正在寻找的答案,但我相信处理此问题的正确方法是使用白名单,而不是黑名单。换句话说,有一个你知道有效的编译器列表,如果客户试图使用与你测试过的版本不同的版本来构建,你会在构建脚本中发出一条警告消息,如下所示:

This compiler is not supported, please see http://www.example.com/list_of_supported_compilers.html for a list of compilers we support. If you choose to continue using this compiler, feel free to do so, but don't expect full support from our tech-support, if you find a problem.

我之所以这样说是因为:

  1. 您将无法证明除了您的黑名单上的版本之外的每个版本都可以正常工作。但是,对于您拥有的任何测试用例,您都可以证明编译器 X 版本 a.b.c-d 有效 [这并不意味着该编译器没有错误 - 只是您没有在测试中遇到任何这些错误!]
  2. 即使编译器“已知良好”(根据定义的任何标准),您的特定代码也可能会触发影响代码的错误。

任何足够大的软件(或硬件)产品都会有错误。您只能通过测试来证明您的软件可以正常工作。依赖外部“编译器 X 的某某版本中存在已知错误”不会帮助您避免影响代码的错误。话虽如此,大多数编译器都经过了很好的测试,因此您(通常)需要做一些相当不寻常/复杂的事情才能使编译器失败。

关于c++ - 用于 C++11 支持的错误编译器版本存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17320322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com