Использование «>>» в gcc и Visual C ++ - PullRequest
1 голос
/ 26 сентября 2010

Мы пишем приложение, которое компилируется как с gcc, так и с Visual C ++.Некоторые члены команды используют только Visual C ++ / Windows, а другие используют только gcc / linux.Из-за различий между компиляторами сборка иногда ломается.Я «исправил» несколько сценариев, которые приводят к разрывам сборки с использованием параметров компилятора для включения / отключения предупреждений, но в настоящее время я застрял с «>>», используемым в шаблонах C ++.

Похоже, что Visual Studio в одностороннем порядке расширила стандарт, добавив «>>» в качестве допустимого выражения в шаблоны (это действительно только в предлагаемом C ++ 0x).Но gcc не принимает это как действительный шаблон.Теперь я не могу найти опцию в Visual Studio, чтобы запретить ">>" или в gcc, чтобы разрешить ">>".Как мне поступить?

Примечание. Этот вопрос касается двойной угловой скобки, а не оператора сдвига вправо.

Ответы [ 3 ]

9 голосов
/ 26 сентября 2010

Я бы разделил их на>>. Это то, что требуют текущие стандарты; это самый правильный и переносимый код. Насколько я знаю, gcc даже не скомпилируется, если угловые скобки находятся рядом друг с другом.

8 голосов
/ 26 сентября 2010

GCC в настоящее время ( начиная с версии 4.3 ) поддерживает это с помощью:

g++ --std=c++0x -o output file1.cpp file2.cpp ...

Вы должны явно указать, что ваш исходный код написан в стандарте C ++ 0x.

1 голос
/ 26 сентября 2010

Способ решения таких проблем заключается в том, чтобы Автоматические сборки и Тесты работали круглосуточно, инициируемые проверками.Это также называется Непрерывная интеграция .Когда сборка нарушается или тест не пройден, вам нужно иметь возможность проверить, какие проверки привели к этому, и указать пальцем на ответственного разработчика (-ей).

См., Например, этот ответ для инструментов, выполняющих это на разных платформах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...