Я знаю, что эти флаги предназначены для С++ 11 в Eclipse.
Но я не знаю, в чем разница и какой из них более предпочтительный.
Кажется, что они оба работают с С++ 11 обычно.
Я знаю, что эти флаги предназначены для С++ 11 в Eclipse.
Но я не знаю, в чем разница и какой из них более предпочтительный.
Кажется, что они оба работают с С++ 11 обычно.
Вы должны предпочесть -std=c++11
.
(Примечание: я предполагаю, что -std=c++11x
является опечаткой в вашем вопросе)
Старый -std=c++0x
нужен только для старых версий компилятора, которые не поддерживают -std=c++11
, и они выбрали это имя, чтобы выразить предварительный и неустойчивый характер функций (и ABI) предстоящего C++11
(и когда еще не было ясно, станет ли это в конечном итоге C++10
или C++12
). Они меняют некоторые детали, адаптируясь к изменяющимся рабочим чертежам стандарта в то время, прежде чем официально был выпущен стандарт С++ 11.
Если ваш компилятор поддерживает -std=c++11
, нет смысла использовать -std=c++0x
. Что касается совместимости: могут быть даже различия и несовместимости, но они не просто связаны с использованием -std=c++0x
, а с конкретными версиями компилятора. Когда компилятор поддерживает оба варианта, они должны быть идентичными.
Стандарты С++ и C обычно называются в течение года, в котором они публикуются, что облегчает запоминание.
Например, в С++ исходный Стандарт был опубликован в 1998 году, поэтому мы говорим о С++ 98, и когда мы ссылаемся на его первую коррекцию, опубликованную в 2003 году, мы говорим о С++ 03.
Предполагалось, что следующий Стандарт после этого будет выполнен в 2008 году, но поскольку он был неопределенным, он был назван С++ 0x, где x означал либо 8, либо 9. На практике, хотя, как мы все знаем, планирование смещено, и поэтому мы заканчиваем С++ 11.
Тем не менее, для следующей версии (С++ 1x) Бьярне Страуструп заявил о своем намерении сделать это через 5 лет (примерно 2016 год). На данный момент есть изменения, внесенные в основной язык (концепции, модули и сбор мусора), и, похоже, основное внимание уделяется расширению библиотеки (например, файловой системы), но это еще рано, так что кто знает!