c++ - 相同的 gcc 编译器版本给出不同机器中与 std 命名空间相关的不同编译结果
问题描述
我们有 3 台带有精确操作系统、cmake 和编译器环境的 linux CI 机器。操作系统是 ubuntu 18.04 LTS、cmake 3.10.2 和 GCC 7.5
有一个 C++ 代码库,其中有几个 .hpp 文件缺少std::
名称空间前缀 ex。对于字符串、cout、endl 等。也有少数 .hpp 文件具有广泛的命名空间使用,即using namespace std
,这被认为是不好的做法,我们将一一删除。然而,代码在其中一台 CI 机器上编译成功,但在其他两台机器上编译失败。即使在出现编译错误的机器上,错误也与不同的 hpp 文件有关。
当编译环境相同时,什么会导致编译器在不同的 CI 机器上给出不同的结果?可能是并行编译或计时或 *.hpp 文件的解析顺序在某些文件中使用 std 命名空间会影响构建结果。相同的机器总是提供相同的结果,因为我们从头开始测试了数十个干净的构建。
解决方案
推荐阅读
- alexa - 如何在 alexa 技能中传递样本话语中的槽值?
- jquery - 带有光滑 jquery 的自定义轮播滑块
- nginx - 重置上游代理标头
- c++ - 在 C++ 中使用递归的另一个空堆栈的帮助下反转堆栈?
- jquery - 点击事件嵌套跨度
- python-3.x - 用于 websockets 的 Python Tornado 提取处理程序
- jmeter - 从标题中提取JMeter边界
- sql-server - Azure 函数 - 从 Azure sql server 中的 blob 存储导入 bacpac 文件 - AAD 令牌
- http - 在 NGINX 中使用 GET 请求自动将 Bot IP 列入黑名单
- python - 网页抓取时如何省略一些结果?