История изменений
Исправление 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):