Каковы различия между-std=c++11 и-std=gnu++11?
каковы различия между -std=c++11
и -std=gnu++11
как параметр компиляции для gcc и clang? Тот же вопрос c99
и gnu99
? Я знаю о стандартах C++ и C, меня интересуют различия в параметрах.
Я где-то читал, что это связано с некоторыми расширениями, но мне непонятно, какие из них и как выбирать между одним или другим для нового проекта.
1 ответов
как вы сами выяснили, разница между этими двумя вариантами заключается в том, включены ли расширения GNU, которые нарушают/расширяют стандарт C++, или нет. Расширения GNU C++ описаны здесь. Вы также можете использовать большинство расширений GNU C (описано здесь) в ваших программах на C++. Было бы также полезно прочитать о -Wpedantic
опция GCC здесь.
обратите внимание, что некоторые расширения все еще могут быть в силе при использовании -std=c++11
, пока они не противоречат стандарту. Например, при использовании компилятора MinGW, мне нужны расширения для работающего Boost.Lexical_Cast
. Но, пока вы не используете ни один из них, вам лучше придерживаться стандарта без расширений для максимальной переносимости. Это может пригодиться, если вы окажетесь вынуждены менять компилятор.