История изменений
Исправление Deleted, (текущая версия) :
Все попытки разукрасить C очень печальны. На С пишется мало нового софта, а если пишется, то одна из причин выбора C = переносимость, в том числе на старые и не-ширпотребные платформы/компиляторы.
Поэтому любое нарушение обратной совместимости означает, что новыми фичами примерно никто не будет пользоваться. Ровно тоже самое с дополнительными «стандартными» функциями. Т.е. все эти нововведения приводят только к росту ifdef/endif, либо вообще игнорируются.
Тем не менее, я бы сделал три вещи:
- Распространить действие
__restrict
с аргументов на все указатели. - Стандартизировать и сделать обязательными все независимые от архитектуры builtin-ы GCC.
- Максимально зачистить все случаи UB и implementation defined, т.е. привести в соответствие с de-facto (хотя и так уже навели порядок).
Короче, __restrict
и GCC как de-facto стандарт )
+Чуть забыл про __unaligned
или __builtin_assume_unaligned()
.
Исходная версия Deleted, :
Все попытки разукрасить C очень печальны. На С пишется мало нового софта, а если пишется, то одна из причин выбора C = переносимость, в том числе на старые и не-ширпотребные платформы/компиляторы.
Поэтому любое нарушение обратной совместимости означает, что новыми фичами примерно никто не будет пользоваться. Ровно тоже самое с дополнительными «стандартными» функциями. Т.е. все эти нововведения приводят только к росту ifdef/endif, либо вообще игнорируются.
Тем не менее, я бы сделал три вещи:
- Распространить действие
__restrict
с аргументов на все указатели. - Стандартизировать и сделать обязательными все независимые от архитектуры builtin-ы GCC.
- Максимально зачистить все случаи UB и implementation defined, т.е. привести в соответствие с de-facto (хотя и так уже навели порядок).
Короче, __restrict
и GCC как de-facto стандарт )