Меня не покидает когнитивный диссонанс. На форумах обсуждаются возвышенные идеи о написании сверх надежных классов, кто-то рассказывает, что его проект собирается с ключами -Wall -Wextra -pedantic -Weffc++. Господи, где все эти достижения науки и техники? Почему я вижу кругом глупейшие ошибки? Может быть, со мной что-то не так?
Метка «Си» - 3
WTF?
2013-10-01 в 7:36, admin, рубрики: c++, code review, open source, pvs-studio, wtf, Блог компании PVS-Studio, обзор кода, ошибки в программе, Программирование, С++, метки: code review, open source, pvs-studio, wtf, обзор кода, ошибки в программе, С++, СиСхема аргументов javascript функции или C-style прототипы без тяжёловесных фреймворков
2013-10-01 в 6:09, admin, рубрики: call, javascript, аргументы, Си, типизация, метки: c++, call, javascript, аргументы, Си, типизацияМногие сталкивались с необходимостью использовать необязательные аргументы функции. Если такой аргумент один, да ещё и последний, то особых проблем не возникает.
function set(name, value){
if(value == undefined){
value = name;
}
...
}
Идем по грибы после Cppcheck
2013-09-09 в 6:11, admin, рубрики: c++, cppcheck, pvs-studio, tools, Блог компании PVS-Studio, разработка, статический анализ кода, метки: c++, cppcheck, pvs-studio, tools, Си, статический анализ кода
После горячих обсуждений про "Большой Калькулятор", мне захотелось проверить ещё что-то из проектов, связанных с проведением исследований. Первое что нашлось, оказался открытый проект OpenMS, связанный с protein mass spectrometry. Этот проект оказалось написан с серьёзным подходом. При разработке используется как минимум Cppcheck. Так что ничего сенсационного ждать не приходилось. Однако был интерес, какие ошибки сможет найти PVS-Studio после Cppcheck. Заинтересовавшихся приглашаю продолжить чтение статьи.
Google выпустила парсер HTML5 на чистом Си
2013-08-14 в 10:43, admin, рубрики: C99, dom, html, html5, open source, Веб-разработка, Си, синтаксический анализ, метки: C99, dom, html5, parser, Си, синтаксический анализУдачная возможность для веб-разработчиков выучить язык программирования Си — HTML5-парсер Gumbo, реализованный в виде небольшой библиотеки C99 без внешних зависимостей. Парсер создан как строительный блок для создания других инструментов и библиотек, таких как валидаторы, языки шаблонов, инструменты рефакторинга и анализа кода.
Особенности:
- Полная совместимость со спецификациями HTML5.
- Устойчивость к некачественным входным данным.
- Простые API, которые могут быть легко обработаны программами на других ЯП.
- Поддержка исходных позиций и указателей в оригинальном коде, при навигации по дереву зависимостей.
- Проходит все тесты html5lib-0.95.
- Проверен на более чем 2,5 млрд страниц в индексе Google.
OpenMCAPI: одновременный запуск Linux и RTOS на многоядерных процессорах
2013-07-16 в 9:41, admin, рубрики: api, BSD license, GPL, linux, mentor graphics, open source, rtos, многоядерные процессоры, ОС, портирование, Программирование, Си, Электроника для начинающих, метки: api, BSD license, GPL, linux, mentor graphics, open source, rtos, многоядерные процессоры, ОС, портирование, Си
В повседневной практике разработчика встраиваемых систем приходится сталкиваться с необходимостью запуска двух и более разноплановых операционных систем на n-ядерных системах на кристалле. Это, как правило, Linux и специализированная RTOS. На плечи Linux ложится работа с тяжеловесными стеками протоколов, а RTOS же занимается задачами реального времени.
Одна из основных задач, которая встает при такой организации системы —обеспечение механизма взаимодействия, то есть межъядерный обмен данными. Если вам интересно узнать один из вариантов решения на базе открытой библиотеки OpenMCAPI, пролистать пару десятков строк программного кода и увидеть реальные цифры пропускной способности при использовании этой библиотеки, добро пожаловать под кат.
Читать полностью »
Не зная брода, не лезь в воду. Часть N4
2013-07-15 в 10:58, admin, рубрики: c++, Блог компании PVS-Studio, метки: c++, Си В этот раз я хочу поговорить о виртуальном наследовании в языке Си++, и почему его следует использовать очень осторожно. Предыдущие статьи: часть N1, N2, N3.
Статья написана по мотивам заметки "Грабли 2: Виртуальное наследование". Статья хорошая, но, на мой взгляд, несколько размыта, и новичок может не до конца уловить суть опасностей. Я решил предложить свой вариант описания проблем связанных с виртуальным наследованиям.
Читать полностью »
Повторная проверка TortoiseSVN с помощью анализатора кода PVS-Studio
2013-06-25 в 6:10, admin, рубрики: c++, pvs-studio, tortoisesvn, Блог компании PVS-Studio, ошибки программистов, метки: c++, pvs-studio, tortoisesvn, ошибки программистов, Си
Мы отправили разработчикам TortoiseSVN на некоторое время бесплатный ключ для анализатора PVS-Studio. Пока они не успели им воспользоваться, я решил быстро скачать исходные коды TortoiseSVN и самостоятельно выполнить анализ. Цель понятна. Очередная небольшая статья для рекламы PVS-Studio.
Читать полностью »
Единорог вновь готов к общению с Си++ программистами
2013-05-08 в 6:25, admin, рубрики: c plus plus, c++, c++11, pvs-studio, Блог компании PVS-Studio, Си, си плюс плюс, си программирование, метки: c plus plus, c++, c++11, pvs-studio, Си, си плюс плюс, си программирование
Приглашаю Си/Си++ программистов присоединиться к блогу PVS-Studio. Вы узнаете о разных интересных вещах из мира Си/Си++ и о том, кто, где и как программирует. Расскажу немного о том, что не было опубликовано на Хабре за время нашего отсутствия здесь.
Читать полностью »
Как заставить компилятор C/C++ генерировать плохой код
2012-12-02 в 8:03, admin, рубрики: c++, компиляция, оптимизация, Программирование, Си, метки: c++, компиляция, оптимизация, СиЭто перевод статьи «How to trick C/C++ compilers into generating terrible code?», автор оригинала — Aater Suleman.
На курсе архитектуры ЭВМ мне сказали, что процессор похож на машину. Руль и педали — это ISA, двигатель — микроархитектура, а программа — водитель. Продолжая эту аналогию, скажу, что использование компьютера похоже на управление машиной через пульт дистанционного управления. Пульт — это клёвая вещь, но в то же время важно понимать, как он работает. Даже в профессиональном ПО я видел много примеров кода, который может смутить даже самый умный компилятор. В этой статье я расскажу об основных методах запутывания компиляторов.