знаю, что в принципе это, вероятно, неопределенное поведение, но в интересах работы с большим проектом, вот мой вопрос о GCC:
Предположим, я компилирую одну единицу транзакции с помощью gcc -std=c++98
и еще один с -std=c++11
, используя точно такую же установку компилятора. Есть ли какая-то гарантия, что я смогу связать два объектных файла и получить четко определенную программу?
Насколько я могу судить, потенциальные проблемы могут возникнуть только из-за различных представлений заголовков библиотек из-за разных макросов, а те, в свою очередь, в лучшем случае добавятновые функции-члены, но никогда объекты-члены. , к классам стандартной библиотеки.
Сделает ли это каким-то образом приемлемым компиляцию разных частей более крупного проекта с разными вариантами языкового диалекта?
Обновление:Я должен добавить ортогональный вопрос: как насчет использования двух разныхверсий GCC (скажем, 4.3 и 4.6), но с одним и тем жевариантом диалекта ( -std=С++98
)? Листинг в этой документации GCC, кажется, предполагает, что библиотека совместима в обоих направлениях между 4.2.2 и 4.6.