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