В коде ядра Linux используется выражение "statement-expression" и typeof extension, что делает его только компилируемым под gcc.
Больше я думаю об этом, больше это не имеет смысла.
Это побеждает цель переносимости и стандартного C. (теперь для Linux-кода ядра нужен специальный компилятор, который поддерживает расширения gcc).
Было ли это неправильным выбором дизайна или была ли конкретная причина для создания кода ядра Linux, специфичного для gcc?
EDIT: Когда я сказал, что это побеждает переносимость, я использовал его в другом контексте. Я думал, что в соответствии со стандартом C он будет принят ЛЮБОЙ компилятор, который поддерживает стандарт C (который является именно целью создания стандарта - унифицировать все разные диалекты C), следовательно, быть более переносимым. Конечно, поскольку gcc настолько популярен, и gcc поддерживает zillion архитектуры, эта линия почти бессмысленна. Я просто спрашиваю, существует ли конкретное обоснование, не соответствующее стандарту C.