LINUX.ORG.RU

История изменений

Исправление shdown, (текущая версия) :

Нет версий Си

Тогда что описывают соответствующие тексты стандартов? Для чего в компиляторах ключ -std=?

, есть версии компиляторов.

В смысле gcc 12.2.0? При чём они тут?

А объявление перед использованием - это просто хороший стиль чтоб не превращать код в помойку.

Нет, у тебя просто какой-то стокгольмский синдром от C89. Можешь назвать сколько-нибудь популярный проект на C99 или выше, который использует подобный «хороший стиль чтоб не превращать код в помойку»?

Ни один из компиляторов не мешает программисту использовать _X для чего угодно.

А в препроцессоре - тем более, там можно даже ключевые слова переопределять, и компилятор который этому помешает - будет однозначно забагованным.

Это то же самое неопределённое поведение, которое уже сто раз обсуждали.

https://en.cppreference.com/w/c/language/identifier

The following identifiers are reserved and may not be declared in a program (doing so invokes undefined behavior):

1. The identifiers that are keywords cannot be used for other purposes. In particular #define or #undef of an identifier that is identical to a keyword is not allowed.

3. All identifiers that begin with an underscore followed by a capital letter or by another underscore (these reserved identifiers allow the library to use numerous behind-the-scenes non-external macros and functions).

Исправление shdown, :

Нет версий Си

Тогда что описывают соответствующие тексты стандартов? Для чего в компиляторах ключ -std=?

, есть версии компиляторов.

В смысле gcc 12.2.0? Причём они тут?

А объявление перед использованием - это просто хороший стиль чтоб не превращать код в помойку.

Нет, у тебя просто какой-то стокгольмский синдром от C89. Можешь назвать сколько-нибудь популярный проект на C99 или выше, который использует подобный «хороший стиль чтоб не превращать код в помойку»?

Ни один из компиляторов не мешает программисту использовать _X для чего угодно.

А в препроцессоре - тем более, там можно даже ключевые слова переопределять, и компилятор который этому помешает - будет однозначно забагованным.

Это то же самое неопределённое поведение, которое уже сто раз обсуждали.

https://en.cppreference.com/w/c/language/identifier

The following identifiers are reserved and may not be declared in a program (doing so invokes undefined behavior):

1. The identifiers that are keywords cannot be used for other purposes. In particular #define or #undef of an identifier that is identical to a keyword is not allowed.

3. All identifiers that begin with an underscore followed by a capital letter or by another underscore (these reserved identifiers allow the library to use numerous behind-the-scenes non-external macros and functions).

Исходная версия shdown, :

Нет версий Си

Тогда что описывают соответствующие тексты стандартов? Для чего в компиляторах ключ -std=?

, есть версии компиляторов.

В смысле gcc 12.2.0? Причём они тут?

А объявление перед использованием - это просто хороший стиль чтоб не превращать код в помойку.

Нет, у тебя просто какой-то стокгольмский синдром от C89. Можешь назвать сколько-нибудь популярный проект на C99 или выше, который использует подобный «хороший стиль чтоб не превращать код в помойку»?

Ни один из компиляторов не мешает программисту использовать _X для чего угодно.

А в препроцессоре - тем более, там можно даже ключевые слова переопределять, и компилятор который этому помешает - будет однозначно забагованным.

Это то же самое неопределённое поведение, которое уже сто раз обсуждали.

https://en.cppreference.com/w/c/language/identifier

The following identifiers are reserved and may not be declared in a program (doing so invokes undefined behavior):