Как правило, по возможности используйте последний стандарт.
Но есть несколько причин, по которым в некоторых ситуациях вы можете выбрать более старый.
-
В вашем коде используются функции, которые изменили поведение в новых стандартах или были полностью удалены. Если у вас нет времени на обновление кода, разумно будет компилировать старый стандарт.
Возможно, ваша цепочка инструментов не реализует новый стандарт правильно. Могут быть известные ошибки, которые вынуждают вас придерживаться более старого.
Необходимо поддерживать несколько компиляторов на нескольких платформах, и не все комбинации пока поддерживают новый стандарт.
Вы должны быть двоично совместимы с кодом, созданным более старым компилятором для более старого стандарта, и у вас нет источника для его перекомпиляции. В этом случае вы можете быть вынуждены использовать тот же старый компилятор и стандарт языка для обеспечения совместимости с ABI.
Внутренняя политика компании может предписывать конкретную версию c по произвольным причинам.
Требования сертификации могут требовать использования определенного c компилятора и языковой версии. Часто случается в строго регулируемых отраслях, например, в медицине.
Ваша команда может не знакомы с новыми функциями, поэтому их использование может увеличить риск ошибок.
Et c (я видел все вышесказанное в реальной жизни, кстати) ..