
Antony
06.05.2017
18:27:28

Evgeniy
06.05.2017
18:28:45

MrSmeet
06.05.2017
18:29:30
А что за болячки?
Ну главная и основная монолитный сложный код и большой порог вхождения. Я уж молчу что есть не совместимости с pure c

Google

Evgeniy
06.05.2017
18:30:08

Antony
06.05.2017
18:30:25

MrSmeet
06.05.2017
18:33:10
Вы так говорите, буд-то разрабатываете GCC
Нужны и важны, но у некоторых по ряду причин нет возможности насладиться всеми прелестями. С другой стороны, можно глянуть на языки которые не тянут лямку совместимости типа бидона и свитера. Ничего хорошего и плохого в этом нет, я уж молчу, что на сегодняшний день и на ansi си люди лопатят. Ну и странно, еще выходит, чеж люди выбирают для своих проектов си, который в больше степени как 40 лет застыл да и у страуса есть по этому поводу в эволюции. Наверное не потому, что не осилили питон или go.

Antony
06.05.2017
18:48:06

MrSmeet
06.05.2017
18:51:35

Antony
06.05.2017
18:55:19
именно

MrSmeet
06.05.2017
19:01:31
именно
Ну тут есть но, что автор не гарантирует добавление фич и поддержка второй версии рано или поздно будет свернута

Alex Фэils?︙
06.05.2017
19:03:30
http://lemon.cs.elte.hu/trac/lemon - оцените либку, мне тут скинули

Alexander
06.05.2017
19:03:51

Sergey
06.05.2017
19:05:32

Google

Alexander
06.05.2017
19:05:39
сходу вижу штуки, которые неплохо было бы перенести в BGL

Roman
06.05.2017
19:33:45
Здравствуйте, товарищи! А в C массивы не хранят свой размер?

Vladislav
06.05.2017
19:34:14
нет
3 варианта:
1. хранить размер отдельно
2. sizeof(array)/sizeof(array[0])
3. динамические массивы с NULL/0 в качестве завершения

Roman
06.05.2017
19:41:09

Boris
06.05.2017
19:42:11

Vladislav
06.05.2017
19:42:59
ага. *argv[] - как пример

Anatoly
06.05.2017
19:47:57
с вариантом под номером три никогда не сталкивался и в книгах не видел, такое действительно используется?
в winapi в некоторых местах, например, из недавнего:
PCTSTR acceptTypes[] = { TEXT("*/*"), nullptr };
auto hRequestHolder = InternetHandlerHolder(
HttpOpenRequest(hConnect, TEXT("GET"), resource, NULL, NULL, acceptTypes, flags, 0),
[](HINTERNET h) {
InternetCloseHandle(h);
});
acceptTypes - null-terminated

Alex Фэils?︙
06.05.2017
19:48:39

Boris
06.05.2017
19:52:25
да си-строка просто
ну про строку я сразу подумал, смутило что автор спрашивал про массивы именно

Evgeniy
06.05.2017
19:52:26
но переход бы медленный и болезненный

Boris
06.05.2017
19:52:53
в winapi в некоторых местах, например, из недавнего:
PCTSTR acceptTypes[] = { TEXT("*/*"), nullptr };
auto hRequestHolder = InternetHandlerHolder(
HttpOpenRequest(hConnect, TEXT("GET"), resource, NULL, NULL, acceptTypes, flags, 0),
[](HINTERNET h) {
InternetCloseHandle(h);
});
не осилил пример, acceptTypes - это массив из строк получается?

Alexander
06.05.2017
19:53:09

Anatoly
06.05.2017
19:53:14
массив из указателей на строки

Alexander
06.05.2017
19:53:33
так что сказки про python 3 везде я в ближайшие годы слушать не буду ?

Boris
06.05.2017
19:53:59

Evgeniy
06.05.2017
19:55:47

Alexander
06.05.2017
19:56:10

Google

Alexander
06.05.2017
19:56:24
и не очень хотелось бы, чтобы они перестали работать
если бы было что-то простое, я бы пропатчил и PR сделал бы
я бы с радостью, но не тут то было ?
я всеми руками и ногами за Python3, но вот что-то как-то переход затянулся

Evgeniy
06.05.2017
20:01:29

Alexander
06.05.2017
20:02:01
я только огромное спасибо скажу

Grigor
06.05.2017
20:05:58
есть же 2to3
ОНО ДАЖЕ РАБОТАЕТ НА ВЫХОДЕ

Александр
06.05.2017
21:02:22

Vladislav
06.05.2017
21:03:18

Александр
06.05.2017
21:03:36

Alexander
06.05.2017
21:03:38
sizeof от ptr

Alex Фэils?︙
06.05.2017
21:04:28
да, эпик грабли.тут при рефакторе сишного проекта, когда перенес макрос свой, напоролся на это ?

Vladislav
06.05.2017
21:04:33
ну, sizeof(base types) - основы как бы

Alex Фэils?︙
06.05.2017
21:04:54
люблю плюснутую версию этого макро, она в шаблон превращается

Александр
06.05.2017
21:06:12
Да основы-то понятно, но это одна из типичных ошибок. Раз человек спрашивает про динамические массивы, наверняка он указатель гоняет. И наверняка попробует найти размер массива вторым способом (ну ведь самый простой на вид!)

Vladislav
06.05.2017
21:07:00
он не спрашивал про динамические
в си вообще много мест где легко прострелить себе оба колена

Google

Vladislav
06.05.2017
21:16:45
в частности строки кодировать, определяя их по-человечьи "...", а не { '.', '.', ... }

Alexander
06.05.2017
21:19:48
хжём constexpr для string

Admin
ERROR: S client not available

Александр
06.05.2017
21:19:52

Alexander
06.05.2017
21:20:21
сделанный на constexpr_allocator и все методы, обмазанные constexpr

Alex Фэils?︙
06.05.2017
21:20:33

Alexander
06.05.2017
21:20:43

Vladislav
06.05.2017
21:20:44

Alexander
06.05.2017
21:21:02

Alex Фэils?︙
06.05.2017
21:21:03
в чистом си не получится, к сожаленью. там чот со стандартизацией туго

Vladislav
06.05.2017
21:21:15
извиняю ?

Alex Фэils?︙
06.05.2017
21:22:01

Grigor
06.05.2017
21:22:41
А чем fixed_string не нравится?

Alex Фэils?︙
06.05.2017
21:22:46
Черновик технического отчета (TR) от ISO по избежанию программных уязвимостей в языке Си. Рассматриваются такие распространенные ошибки, как использование функций, не принимающих размер буфера (таких, как strcpy(), sprintf, и, в особенности, функции gets(), читающей строчку из stdin и пишущую в буфер вне зависимости от его размера), целочисленное и знаковое переполнение, висячие ссылки на локальные объекты, ошибки "Off-by-one" в индексах массивов и другие, которые могут злоумышленниками использоваться как программные уязвимости.
Ссылка на документ: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2018.pdf
#c #defensiveprogramming #iso #n2018 #dontshootattheleg #coolhatzckersshallnotpass


Vladislav
06.05.2017
21:27:54
Черновик технического отчета (TR) от ISO по избежанию программных уязвимостей в языке Си. Рассматриваются такие распространенные ошибки, как использование функций, не принимающих размер буфера (таких, как strcpy(), sprintf, и, в особенности, функции gets(), читающей строчку из stdin и пишущую в буфер вне зависимости от его размера), целочисленное и знаковое переполнение, висячие ссылки на локальные объекты, ошибки "Off-by-one" в индексах массивов и другие, которые могут злоумышленниками использоваться как программные уязвимости.
Ссылка на документ: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2018.pdf
#c #defensiveprogramming #iso #n2018 #dontshootattheleg #coolhatzckersshallnotpass
и опять ни слова про про strlcpy/strlcat


Александр
06.05.2017
21:28:05
А чем fixed_string не нравится?
Они immutable по размеру. Соответственно push_back без создания копии не сделаешь. Следовательно тип заранее предопределён. Значит и ветка кода заранее предопределёна - никаких циклов

MrSmeet
06.05.2017
22:06:51
Вообщем не спал ночь. И пришел ко мне такой вопрос, какому япу ебы мог доверить свою жизнь. Ну да вот так, если бы пришлось пилить софт для какой-нить наковальты в несколько тонн, и знаете походу я сделал бы выбор в пользу си. А какой ваш выбор?

Плюшка
06.05.2017
22:17:51
Плюсы

Berkus
06.05.2017
22:52:08

Google

Roman
06.05.2017
22:55:35

Berkus
06.05.2017
22:56:14
будет очень ленивая наковальня без сайд эффектов

Roman
06.05.2017
22:56:42

Antony
07.05.2017
06:31:44

Aidar
07.05.2017
06:36:23
Надо тогда сначала стандарт прочитать наверное
оформите ваши желания в виде идеи на stdcpp.ru
я посмотрю, что можно сделать
стоит правда немного обговорить здесь в чатике, будет быстрее
приведите примеры, где это может быть полезным + какое бы решение данной проблемы вы хотели видеть ?

Evgeniy
07.05.2017
06:47:01

Aidar
07.05.2017
06:52:14
У меня подкоптило от сравнения плюсов и питона

Berkus
07.05.2017
07:08:39
а что, оба одинаковые строготипизированные языки со скобочками