Обновить
214
0
gribozavr @gribozavr

Пользователь

Отправить сообщение
Вот так вот парой команд вы из CentOS сделали Slackware.
Boilerplate — шаблонный и неинтеренсый в контексте данной статьи код.

WindowProc(), TextOut(), InvalidateRect() не имеют никакого отношения к теме. Если хотите выложить весь код — выложите на гитхаб или ещё куда-то.
Не хотите хелло-ворлд — так уберите 80% boilerplate и оставьте саму суть.
Коэффициент бесполезности ещё одного куска GUI кода без комментариев на WinAPI в 2012 году достигает единицы.
И сколько студенту даётся времени на написание парсера Си? Неделя? :)

Вот и учатся решать задачи лишь бы как.
Прошу добавить результаты тестов кода, скомпилированного clang — я видел много коммитов от специалистов Intel в бекенд.
Для Debian и Ubuntu:

/etc/network/interfaces:
allow-hotplug wlan0
iface wlan0 inet dhcp
	wpa-ssid <SSID>
	wpa-psk  <PASSWORD>
Там даже комментарии те же:
> Avoid hiding placement new that's needed by the stl containers
> А вы пытались откомпилировать приведенные примеры и проверить — находятся ли, например, пути к стандартным заголовкам или нет?

Не пробовал :) Вот был бы патч на дерево кланга…

Сейчас вчитался в код — вы используете ASTUnit, поэтому вполне возможно ваш код будет находить стандартную библиотеку. Извините если был не прав.

> основное ее назначение — позволить клиентскому коду обработать за один раз сразу несколько исходных файлов

В том числе. А также избавить клиентский код от необходимости разбираться в хитросплетениях объектов, которые ему непосредственно не нужны.
Отлично, только небольшое замечание по терминологии: второй подход это не «DataPool», а pointer-bump allocator.
Я говорю не про разбор опций, а про формирование опций для -cc1 режима. Например, поиск инсталляции GCC и стандартной библиотеки c++.

А так да — ничего особого, только делает ваш код короче раз в пять.
Используйте Tooling для работы с clang api, пожалуйста! Потому что следующий вопрос после «а как это скомпилировать» обычно «а почему системные заголовки не подключаются» — потому что в вашем примере вы фактически продублировали маленький кусочек драйвера, который делает очень много системно-зависимой магии за кулисами.
Си бекенд удалили так как не было мейнтейнеров.
ASTMatchers некоторое время назад закоммитили.
Это предлагаемое исправление текста топика, чтобы тот соответствовал дейстительности.
> Сравнение 5 вариантов кода с undefined bahavior.

Fixed.
Я кстати ошибся.

min = -2147483649; // минимально допустимое -2147483648

Здесь литерал -2147483649 имеет тип long, а затем происходит implicit conversion в int.

А если написать так:

min = -2147483648 — 1;

(или, как бы я написал, min = INT_MIN — 1;)

То получим переполнение знаковых чисел, так как оба операнда имеют тип int.

В общем если хотите продемонстрировать особенности дополнительного кода портабельно и не заходя на скользкие участки, предлагаю проще: измен ите в это упражнении тип на short. Тогда оба варианта:
min = -32769;
min = -32768 — 1;
будут работать корректно, так как все литералы тут имеют тип int и переполнения не происходит (неявное преобразование в short происходит после арифметики).
Совершенно верно, формат другой, но это не повод делать ошибки или оставлять простанство для неточностей.

Поэтому я и предлагаю убрать объявление с множественными деклараторами, так как это не важно для начинающих, но очень запутывает. А вот говорить что можно переполнять знаковые числа — это, что называется, учить плохому, так как в стандарте явно написано что так делать нельзя (тот факт что у вас на gcc получился «нужный» эффект ничего не доказывает). И знаковые/беззнаковые целочисленные типы тоже стоит вводить параллельно, а не общим списком, так как между знаковыми/беззнаковыми типами существует соответствие. Так, например, unsigned это просто сокращение от unsigned int и поэтому нет смысла показывать эту возможность учащимся: просто ТИП знаковый, unsigned ТИП — беззнаковый.
> При компиляции gcc выводится всего лишь предупреждение

Почитайте что такое UB. Я серьёзно. (Компилятор совершенно не обязан о нём предупреждать.) Вы вообще читали стандарт? У вас есть хотя бы копия черновика стандарта?

> Доходим до максимально, потом сразу идет минимальное и т.д.

Эта отличная абстракция громко разбивается о процессры, использующие one's complement (а не two's complement), которые поддерживает стандарт Си, определяя signed overflow как UB.

> Это одно и тоже, но и писать unsigned int тоже можно.

Спасибо, я в курсе. А в тексте книги на это нет и мелейшего намёка.

Информация

В рейтинге
Не участвует
Откуда
Украина
Зарегистрирован
Активность