Andrey Stolyarov

Андрей Викторович Столяров: сайт автора

В издательстве МАКС Пресс вышла очередная книга А.В.Столярова, посвящённая принципам оформления программного кода. В ближайшее время (скорее всего, сразу после новогодних каникул) на сайте появится электронная версия этой книги. Stay tuned!


From admin profile Mon Apr 8 09:28:39 2013 pencil

userpic

Соглашения как соглашения

Для меня было сюрпризом. что C++ вообще используется в коде gcc. В остальном соглашения как соглашения. Про RTTI и исключения я полностью согласен. как и про printf вместо iostream. Про разрешение на использование стандартной библиотеки C++ у меня сложилось ощущение, что авторам этих соглашений банально не хватило упрямства (или убеждённости) её запретить.

А в целом — это соглашения отдельно взятого проекта, обусловленные целями, историей, текущим положением и так далее, вряд ли они могут представлять серьёзный интерес за пределами проекта, пусть даже этот проект — аж "сам" gcc.

From Anonymous (unverified) Sun Apr 7 02:05:00 2013 pencil

Здравствуйте. Х

Здравствуйте.
Хотел бы услышать ваше мнение по поводу этих соглашений
http://gcc.gnu.org/codingconventions.html

From Anonymous (unverified) Sun Jan 20 21:08:00 2013 pencil

Строковые литералы и вложенные подпрограммы в 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

parent From admin profile Tue Jan 22 13:42:00 2013 pencil

userpic

И что?

Ни C99, ни тем более GNU extensions не имеют никакого отношения к языку Си. C99 — это не Си, это бред, придуманный командой международных террористов, по недоразумению называемых стандартизационным комитетом. Ну а авторов GNU extensions следовало бы, полагаю, немножко полечить.

Кроме того, процитированный вами фрагмент относится к multibyte literals, то есть к "строкам", состоящим из элементов типа wchar_t. Моё отношение к non-ascii chars в тексте программы довольно подробно изложено в упоминаемой вами книжке.

parent From Anonymous (unverified) Tue Jan 22 19:09:00 2013 pencil

Это относится

Это относится не только к multibyte literals и это есть не только в C99. В ANSI C это тоже есть. Можете найти текст черновика соответствующего стандарта и почитать.
Или проверить на этом примере:

#include <unistd.h>
#include <string.h>

int main(void)
{
  const char *n = 
  "test\n"
  "test\n";

  write(STDOUT_FILENO, n, strlen(n));  
  return 0;
}

GCC с параметрами -ansi -pedantic компилирует этот пример без всяких возражений

parent From admin profile Wed Jan 23 15:58:00 2013 pencil

userpic

похоже на правду

По правде, gcc меня бы не убедил, но clang делает то же самое. Точно помню, что в начале моей карьеры не все компиляторы это умели, но тогда C89 только-только появился, соответствовали ему далеко не все, да и, на самом деле, не факт, что проприетарному стандарту (а ISO других не делает в силу её политики) так уж прямо следует соответствовать.

Ну, значит так тому и быть, в следующем издании исправлю, если оно когда-нибудь будет. Спасибо.


pencil

пояснение


Вы находитесь на официальном сайте Андрея Викторовича Столярова, автора учебных пособий по программированию и информационным технологиям.

Если вы искали сайт замечательного писателя-фантаста Андрея Михайловича Столярова, то вам, к сожалению, не сюда.

Андрей Михайлович Столяров в библиотеке Мошкова

Авторские права © Андрей Викт. Столяров, 2009 — 2024