История изменений
Исправление shdown, (текущая версия) :
Тексты стандартов описывают версии стандартов. Так сложилось, что в Си это всего лишь одна из конкурирующих «реализаций» (в кавычках, потому что реализаций то как раз у ISO и нет). Настоящий Си это то, что компилируют реальные компиляторы, и он зависит от кучи флагов их запуска.
Получается, ты придрался к словам «версия языка», вместо которых, по-твоему, нужно было сказать «версия стандарта». Однако я не понимаю, в чём разница. Каждый стандарт описывает отдельный язык. Они даже в общем случае не совместимы друг с другом (выпилили gets в C11).
Не надо вот на апеляции к авторитетам переходить. Объявление в середине кода в большинстве случаев приводит к помойке в коде. Это моё заявление никак не зависит от того, какие там у кого привычки.
Всё наоборот. В большинстве книг по программированию для новичков говорится, что неуместное использование глобальных переменных приводит к помойке в коде, потому что любая функция может прочитать и записать глобальную переменную и становится очень сложно разобраться, что от чего зависит. Так вот, ты выступаешь за использование тех же глобальных переменных, только в рамках одной функции.
В реальных компиляторах (например gcc) - вполне себе определённое. Никакой магии над такими идентификаторами в них не заложено.
Язык (_Bool, _Generic).
Расширения GNU C (_Float128).
Промежуточные сущности между языком и реализацией (функции для деления __int128).
Реализация (_GLOBAL_OFFSET_TABLE_, _IO_stdin_used).
Манглинг в C++ (_Z1hic).
Названия для inline-функций, которые компилятор не осилил заинлайнить, а назвать их как-то нужно.
Продолжать? Там же специально пояснение написано: “these reserved identifiers allow the library to use numerous behind-the-scenes non-external macros and functions”.
Исходная версия shdown, :
Тексты стандартов описывают версии стандартов. Так сложилось, что в Си это всего лишь одна из конкурирующих «реализаций» (в кавычках, потому что реализаций то как раз у ISO и нет). Настоящий Си это то, что компилируют реальные компиляторы, и он зависит от кучи флагов их запуска.
Получается, ты придрался к словам «версия языка», вместо которых, по-твоему, нужно было сказать «версия стандарта». Однако я не понимаю, в чём разница. Каждый стандарт описывает отдельный язык. Они даже в общем случае не совместимы друг с другом (выпилили gets в C11).
Не надо вот на апеляции к авторитетам переходить. Объявление в середине кода в большинстве случаев приводит к помойке в коде. Это моё заявление никак не зависит от того, какие там у кого привычки.
Всё наоборот. В большинстве книг по программированию для новичков говорится, что неуместное использование глобальных переменных приводит к помойке в коде, потому что любая функция может прочитать и записать глобальную переменную и становится очень сложно разобраться, что от чего зависит. Так вот, ты выступаешь за использование тех же глобальных переменных, только в рамках одной функции.
В реальных компиляторах (например gcc) - вполне себе определённое. Никакой магии над такими идентификаторами в них не заложено.
Язык (_Bool, _Generic).
Расширения GNU C (_Float128).
Промежуточные сущности между языком и реализацией (функции для деления __int128).
Реализация (_GLOBAL_OFFSET_TABLE_, _IO_stdin_used).
Манглинг в C++ (_Z1hic).
Названия для inline-функций, которые компилятор не осилил заинлайнить, а назвать их как-то нужно.
Продолжать?