Ранее мне говорили (правильно или неправильно), что я должен использовать различные старые стандарты C и C ++. Например, в модуле Uni, который я сделал на C в этом году, нам пришлось использовать ANSI C (который, я считаю, C89?). В другой раз мне сказали использовать C99.
Каждый раз, когда мне сообщают об одном из них, причина заключается в том, что C11 небезопасен в использовании, поскольку новые функции могут поддерживаться не каждым компилятором и т. Д. (Я не большой специалист по этому вопросу, поэтому объяснение будет отличный).
Мне кажется смешным, что стандарт все еще не используется широко через 3 года после его выпуска. Эти люди не правы или это действительно плохая идея использовать C11 и C ++ 11?
Ни то, ни другое … проклятие наследия.
нет Вы должны использовать новейшие инструменты, доступные на вашей платформе и совместимые с другими элементами в системе. Новые инструменты позволяют «лучше» программировать, более безопасные программы, более лаконичные программы и т. Д.
да Вы должны использовать старые инструменты, ну, очень просто, много работы по обслуживанию. Некоторые из них будут на очень старых системах … знание вопросов инструментов поможет, когда нужно будет внести изменения.
Ваша целевая аудитория (люди и системы) будет определять, какие инструменты использовать и какие инструменты поддерживать. Самый низкий общий знаменатель почти всегда побеждает.
По тем же причинам, я думаю, это основной мотив обратной совместимости. Если новые инструменты не ломают старый код, то продвижение вперед облегчается.
В общем, это хорошая идея использовать новые возможности языка с новыми компиляторами. В отрасли наблюдается общее движение по поддержке новых языков (даже до того, как стандарт станет окончательным, например, clang и gcc с выходом C ++ 14).
Microsoft, один из крупнейших поставщиков компиляторов C, заявил, что они не намерены поддерживать развивающийся стандарт С; они поставляют компилятор C90 и их компилятор C ++ скомпилирует подмножество C текущего стандарта C ++.
Если вам не нужен ваш код C для компиляции в Windows, или вы можете использовать компилятор не Microsoft, то вы можете свободно использовать C11.
В любом случае, поскольку подмножество C в C ++ 11 ближе к C11, чем к C90, имеет смысл изучить текущий стандарт C и подмножество этого стандарта, совместимого с текущим стандартом C ++.