Используя новые стандарты

Ранее мне говорили (правильно или неправильно), что я должен использовать различные старые стандарты C и C ++. Например, в модуле Uni, который я сделал на C в этом году, нам пришлось использовать ANSI C (который, я считаю, C89?). В другой раз мне сказали использовать C99.
Каждый раз, когда мне сообщают об одном из них, причина заключается в том, что C11 небезопасен в использовании, поскольку новые функции могут поддерживаться не каждым компилятором и т. Д. (Я не большой специалист по этому вопросу, поэтому объяснение будет отличный).

Мне кажется смешным, что стандарт все еще не используется широко через 3 года после его выпуска. Эти люди не правы или это действительно плохая идея использовать C11 и C ++ 11?

2

Решение

Ни то, ни другое … проклятие наследия.

нет Вы должны использовать новейшие инструменты, доступные на вашей платформе и совместимые с другими элементами в системе. Новые инструменты позволяют «лучше» программировать, более безопасные программы, более лаконичные программы и т. Д.

да Вы должны использовать старые инструменты, ну, очень просто, много работы по обслуживанию. Некоторые из них будут на очень старых системах … знание вопросов инструментов поможет, когда нужно будет внести изменения.

Ваша целевая аудитория (люди и системы) будет определять, какие инструменты использовать и какие инструменты поддерживать. Самый низкий общий знаменатель почти всегда побеждает.

По тем же причинам, я думаю, это основной мотив обратной совместимости. Если новые инструменты не ломают старый код, то продвижение вперед облегчается.

В общем, это хорошая идея использовать новые возможности языка с новыми компиляторами. В отрасли наблюдается общее движение по поддержке новых языков (даже до того, как стандарт станет окончательным, например, clang и gcc с выходом C ++ 14).

3

Другие решения

Microsoft, один из крупнейших поставщиков компиляторов C, заявил, что они не намерены поддерживать развивающийся стандарт С; они поставляют компилятор C90 и их компилятор C ++ скомпилирует подмножество C текущего стандарта C ++.

Если вам не нужен ваш код C для компиляции в Windows, или вы можете использовать компилятор не Microsoft, то вы можете свободно использовать C11.

В любом случае, поскольку подмножество C в C ++ 11 ближе к C11, чем к C90, имеет смысл изучить текущий стандарт C и подмножество этого стандарта, совместимого с текущим стандартом C ++.

2