Следуют ли g ++ стандартам C ++ 14 ISo, флагам компилятора - что они на самом деле означают? - PullRequest
0 голосов
/ 14 февраля 2019

Я недавно читал о компиляторах и gcc (вроде как новичок в программировании), я попытался использовать auto в своем коде, который дал мне ошибку, показывающую, что "auto имеет другое значение в c ++ 11", поэтому я нашел его в Google и нашелчто мне нужна поддержка c ++ 11 или c ++ 14, и поэтому я включил в настройках компилятора «g ++ следовать стандартам ISO c ++ 14», и он начал работать, в настройках компилятора было множество дополнительных опций, которые ятеперь стало известно, что они, по-видимому, называются «флагами», я немного озадачен тем, что на самом деле представляют собой эти флаги, и имел ли мой компилятор поддержку c ++ 14? или мне все же нужно скачать отдельный компилятор для использования c++ 14, я использую блоки кода 17.2. Было бы очень полезно, если бы кто-то мог предоставить ссылки, чтобы узнать больше о том, что на самом деле есть флаги и что делать с g ++ / c ++ 11 / c ++ 14 и что мне делатьиспользуя.

Вот варианты, о которых я говорю: -

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Все это означает, что g ++ будет компилировать со следующими аргументами в соответствии с соответствующим стандартом.

g++ -std=c++11 foo.cpp -o foo

означает, что g ++ будет компилировать foo.cpp с использованием стандарта C ++ 11

g++ -std=c++14 foo.cpp -o foo

означает, что g ++ будет компилировать foo.cpp с использованием стандарта C ++ 14

Разница в том, что следующий код не будет компилироваться при использовании аргумента c ++ 11, но будет компилироваться вс ++ 14.

auto func()
{
    return 2;
}

int main()
{
    int a = func();
}
0 голосов
/ 14 февраля 2019

Флаги используются для того, чтобы решить, какой стандарт использовать при компиляции кода, и это, в свою очередь, означает, что если вы используете функции, которые не соответствуют вашему текущему стандарту и находятся в более новом стандарте, то компилятор будет жаловатьсяоб этом.

...