Сайт stolyarov.info переехал на новый сервер (см. stolyarov.info). Версия, которую вы видите, оставлена работать на неопределённое (но вряд ли продолжительное) время на случай выявления ошибок при переносе контента.
Если вы видите ЭТО по адресу stolyarov.info или www.stolyarov.info — это значит, что ваш DNS-сервер всё ещё отдаёт старую информацию по этим адресам.
Соглашения как соглашения
Для меня было сюрпризом. что C++ вообще используется в коде gcc. В остальном соглашения как соглашения. Про RTTI и исключения я полностью согласен. как и про printf вместо iostream. Про разрешение на использование стандартной библиотеки C++ у меня сложилось ощущение, что авторам этих соглашений банально не хватило упрямства (или убеждённости) её запретить.
А в целом — это соглашения отдельно взятого проекта, обусловленные целями, историей, текущим положением и так далее, вряд ли они могут представлять серьёзный интерес за пределами проекта, пусть даже этот проект — аж "сам" gcc.
Здравствуйте. Х
Здравствуйте.
Хотел бы услышать ваше мнение по поводу этих соглашений
http://gcc.gnu.org/codingconventions.html
Строковые литералы и вложенные подпрограммы в C
Здравствуйте.
На 66 странице в ващей книге утверждается, что в чистом C нельзя сделать конкатенацию строковых литералов, аналогичную таковой в C++. Это неверно. В черновике стандарта C99 по этому поводу написано следующее:
6.4.5 String literals
...
In translation phase 6, the multibyte character sequences specified by any sequence of adjacent character and wide tring literal tokens are concatenated into a single multibyte character sequence. If any of the tokens are wide string literal tokens, the resulting multibyte character sequence is treated as a wide string literal; otherwise, it is treated as a character string literal.
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
Еще GCC поддерживает вложенные подпрограммы для C как нестандартное языковое расширение http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
И что?
Ни C99, ни тем более GNU extensions не имеют никакого отношения к языку Си. C99 — это не Си, это бред, придуманный командой международных террористов, по недоразумению называемых стандартизационным комитетом. Ну а авторов GNU extensions следовало бы, полагаю, немножко полечить.
Кроме того, процитированный вами фрагмент относится к multibyte literals, то есть к "строкам", состоящим из элементов типа wchar_t. Моё отношение к non-ascii chars в тексте программы довольно подробно изложено в упоминаемой вами книжке.
Это относится
Это относится не только к multibyte literals и это есть не только в C99. В ANSI C это тоже есть. Можете найти текст черновика соответствующего стандарта и почитать.
Или проверить на этом примере:
GCC с параметрами
-ansi -pedantic
компилирует этот пример без всяких возраженийпохоже на правду
По правде, gcc меня бы не убедил, но clang делает то же самое. Точно помню, что в начале моей карьеры не все компиляторы это умели, но тогда C89 только-только появился, соответствовали ему далеко не все, да и, на самом деле, не факт, что проприетарному стандарту (а ISO других не делает в силу её политики) так уж прямо следует соответствовать.
Ну, значит так тому и быть, в следующем издании исправлю, если оно когда-нибудь будет. Спасибо.