Рубрика «c++» - 219

Одногруппник прислал C++-код с какой-то ошибкой и вывод компилятора по этому поводу. Но более всего меня удивила не его проблема, а то, что в коде создавался на стеке массив с неизвестной на этапе компиляции длиной. Помнится, в начале изучения языка столкнулся с этим и уяснил, что так делать нельзя. Странно, но других ошибок компилятор одногруппника не выдал…

Где-то читал, что следующий Стандарт C++14, возможно, позволит выполнять такой трюк. Но настоящий говорит, что размер массива должен быть constant expression. Это еще раз уменьшает совместимость с C99, где VLAs давно доступны.
Читать полностью »

image
Для поиска талантливых программистов написал тестовое задание C++. Вкратце, сложность задачи состоит в передачи дополнительных данных в функцию сравнения, которая используется сортировкой из стандартной библиотеки.
Из википедии:

Функциональный объект (англ. function object), так же функтор, функционал и функционоид — распространённая в программировании конструкция, позволяющая использовать объект как функцию. Часто используется как callback, делегат, либо как замена лямбда-выражениям в нефункциональных языках программирования.

Данное тестовое задание не требует знания решения сходу, хотя опытный программист, думаю, запросто так и сделает. Разрешается использовать интернет. Я без подсказки на stackoverflow не мог найти красивое решение. Цель задания — понять, умеет ли соискатель читать код, находить решения поставленных задач.
Читать полностью »

Всем привет!
Продолжаю перевод книги John Torjo «Boost.Asio C++ Network Programming». В этой части второй главы мы поговорим про асинхронное программирование.

Содержание:

  • Глава 1: Приступая к работе с Boost.Asio
  • Глава 2: Основы Boost.Asio
  • Глава 3: Echo Сервер/Клиент
  • Глава 4: Клиент и Сервер
  • Глава 5: Синхронное против асинхронного
  • Глава 6: Boost.Asio – другие особенности
  • Глава 7: Boost.Asio – дополнительные темы

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

Читать полностью »

Приветствую тебя, читатель. У меня есть хобби — это старый добрый Warcraft 3. На хабре уже был цикл статей, посвященный этой замечательной игре. Хочу поделиться с комьюнити одной утилитой, пригодившейся мне при проведении стримов. Всех заинтересовавшихся прошу пройти под кат.
Читать полностью »

Предисловие переводчика

Десять лет назад появилась первая редакция High Integrity C++ Coding Standard. К тому времени С++ был уже пять лет как стандартизирован ISO и почти двадцать лет использовался в индустрии. Это был соверешенно взрослый язык с широким сообществом профессиональных и не только разработчиков. Сообщество это накопило достаточно анекдотов про расстрелянные ноги, чтобы в нем созрела идея о создании стандарта ограничений — перечня того, чего в языке делать не следует.

К тому времени уже существовали подобные стандарты, но они как правило были закрыты и малоизвестны. HICPP, изданный компанией Programming Research Ltd, стал первым открытым стандартом высококачественного программирования на языке С++. Чуть позже к нему присоединились JSF AV C++, открытый компанией Локхид-Мартин и MISRA-C++:2008 Американской ассоциации надежности автомобильной индустрии. Из этой тройки HICPP остается наиболее популярным среди широкой публики.

Конструктивно HICPP — это примерно две сотни правил и рекомендаций, каждое из которых позволяет избежать глупых ошибок при использовании того или иного аспекта языка. К каждому правилу прилагается пояснение, иногда сопровождаемое примером кода, список исключений и ссылка на тот или иной источник. Все вместе — 84 страницы мозгодробительного текста, с которым крайне желательно ознакомиться всякому, кто не хочет переизобрести все эти правила одно за одним на основе личного печального опыта.

Данный перевод предназначается исключительно для поверхностного ознакомления и содержит только текст самих правил без пояснений и примеров. Полный текст стандарта на языке оригинала доступен по адресу: http://www.codingstandard.com/HICPPCM/
Читать полностью »

Введение

Shed Skin — это экспериментальный транслятор из Python в C++, разработанный для повышения скорости выполнения программ на Python с интенсивными вычислениями. Он преобразует программы, написанные на ограниченном подмножестве языка Python, в C++. Код C++ можно скомпилировать в исполняемый код, который может быть как отдельной программой, так и модулем расширения, легко импортируемым и используемым в обычной программе на Python.

Читать полностью »

На днях обновился Google Testing Framework до версии 1.7.0.
В новой версии:
* Новая функция: death-тесты поддерживаются на OpenBSD и в IOS Simulator;
* Новая функция: Test :: RecordProperty () теперь может быть использована за пределами тестового метода;
* Новые возможности: — gtest_list_tests теперь печатает параметры-типы и параметры-значения для каждого теста;
* Улучшение: указатели char и массивы символов теперь обрабатываются корректно;
* Улучшение: отчеты об отказах в XML файлах теперь содержат номер строки и файл;
* «Potentially breaking change»: RUN_ALL_TESTS () теперь реализована в виде функцим вместо макроса для того, чтобы лучше работать с Clang;
Читать полностью »

Всем привет!

Давно хотел написать статью. Я сам мало люблю длинные тексты с небольшим количеством полезной информации, поэтому постараюсь сделать этот максимально насыщенным.

Обобщенная тема – эффективная упаковка данных, сериализация и десериализация объектов.
Основная цель – поделиться своими размышлениями по этому поводу и обсудить структуру данных DSV.

Проблема:
Известные мне на текущий момент (2013-09-19 18:09:56) механизмы бинарной сериализации обладают недостаточной гибкостью или избыточность занимаемого пространства. Например:
QString s1(“123”); -> 4 байта размера данных = 0x00000003, 3 байта полезных данных = “123”, эффективность = 3/7;
U32 val1(123); -> 4 байта данных (0x0000007B), 1 байт из которых является значимым = 123 (0x7B), эффективность = 1/4.
Читать полностью »

Всем привет!
Продолжаю перевод книги John Torjo «Boost.Asio C++ Network Programming». Вторая глава получилась большая, поэтому разобью ее на две части. В этой части мы поговорим именно про основы Boost.Asio, а во второй части речь пойдет про асинхронное программирование.

Содержание:

  • Глава 1: Приступая к работе с Boost.Asio
  • Глава 2: Основы Boost.Asio
    • Часть 1: Основы Boost.Asio
    • Часть 2: Асинхронное программирование
  • Глава 3: Echo Сервер/Клиент
  • Глава 4: Клиент и Сервер
  • Глава 5: Синхронное против асинхронного
  • Глава 6: Boost.Asio – другие особенности
  • Глава 7: Boost.Asio – дополнительные темы

В этой главе мы рассмотрим то, что вам обязательно знать, используя Boost.Asio. Мы углубимся в асинхронное программирование, которое намного сложнее, чем синхронное и гораздо более интересное.

Читать полностью »

PVS-Studio, OpenMS

После горячих обсуждений про "Большой Калькулятор", мне захотелось проверить ещё что-то из проектов, связанных с проведением исследований. Первое что нашлось, оказался открытый проект OpenMS, связанный с protein mass spectrometry. Этот проект оказалось написан с серьёзным подходом. При разработке используется как минимум Cppcheck. Так что ничего сенсационного ждать не приходилось. Однако был интерес, какие ошибки сможет найти PVS-Studio после Cppcheck. Заинтересовавшихся приглашаю продолжить чтение статьи.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js