LINUX.ORG.RU

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

Исправление 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-функций, которые компилятор не осилил заинлайнить, а назвать их как-то нужно.

Продолжать?