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