Та же версия компилятора g cc дает разные результаты компиляции, связанные с пространством имен std на разных машинах - PullRequest
0 голосов
/ 16 июня 2020

У нас есть 3 linux CI-машин с точными ОС, cmake и средами компилятора. ОС - ubuntu 18.04 LTS, cmake 3.10.2 и G CC 7.5

Существует база кода C ++, в которой отсутствуют несколько файлов .hpp std:: префикс пространства имен ex. для строки, cout, endl и т. д. c. Есть также несколько файлов .hpp с широким пространством имен, например using namespace std, что считается плохой практикой, и мы удаляем их один за другим. Однако код успешно компилируется на одной из машин CI, но не работает на двух других. Даже на машинах, где видны ошибки компиляции, ошибки связаны с разными файлами hpp.

Что может привести к тому, что компилятор будет давать разные результаты на разных машинах CI, если среда компиляции одинакова? Может ли это быть параллельная компиляция или синхронизация, или порядок анализа файлов * .hpp, что использование пространства имен std в некоторых файлах влияет на результат сборки. Одни и те же машины всегда дают одни и те же результаты, которые мы тестировали с десятками чистых сборок с нуля.

...