Как стать автором
Обновить

Печальная судьба спецификаторов формата функции printf для символов Юникода в Visual C++

Время на прочтение4 мин
Количество просмотров12K
Поддержка Юникода в Windows появилась раньше, чем в большинстве остальных операционных систем. Из-за этого многие проблемы, связанные с представлением символов, в Windows решались не так, как в других системах, разработчики которых отложили внедрение нового стандарта до лучших времён [1]. Самый показательный пример: в Windows для представления символов Юникода используется кодировка UCS-2. Она была рекомендована Консорциумом Юникода, поскольку версия 1.0 поддерживала только 65 536 символов [2]. Пять лет спустя Консорциум передумал, но к тому времени менять что-то в Windows было уже поздно, так как на рынок уже были выпущены системы Win32s, Windows NT 3.1, Windows NT 3.5, Windows NT 3.51 и Windows 95 — все они использовали кодировку UCS-2 [3].

Но сегодня мы поговорим о строках форматирования функции printf.
Читать дальше →
Всего голосов 69: ↑64 и ↓5+59
Комментарии22

PVS-Studio for Visual Studio 2022

Время на прочтение10 мин
Количество просмотров831

The PVS-Studio team writes articles on various topics. But we rarely make articles on how to interact with the analyzer. Let's fix it with an article about the PVS-Studio plugin for the Visual Studio 2022 environment.

Read more
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

PVS-Studio для Visual Studio 2022

Время на прочтение12 мин
Количество просмотров5.4K

Команда PVS-Studio пишет много статей на разные интересные темы. Но вот вопросы взаимодействия с самим анализатором затрагиваются редко. Исправим этот недочёт обзорной статьёй, описывающей плагин PVS-Studio для среды Visual Studio 2022.

Читать далее
Всего голосов 14: ↑10 и ↓4+6
Комментарии10

Как протащить верблюда сквозь игольное ушко, или обновление компилятора С++ на проекте старше 10 лет

Время на прочтение12 мин
Количество просмотров21K

Привет! Меня зовут Колосов Денис, я являюсь разработчиком клиентской части проекта «Allods Online» в студии IT Territory. Сегодня я расскажу о том, как мы решились обновить среду разработки и заодно компилятор на нашем проекте с Visual C++ 2010 на 2019. 

О чем пойдет речь?

1. Как мы докатились до такой жизни и отважились на этот шаг;
2. О сборке вендерских библиотек и всего окружения, которое у нас есть;
3. С какими кастомными проблемами мы столкнулись;
4. К чему это все привело.

Читать далее
Всего голосов 78: ↑78 и ↓0+78
Комментарии29

Геометрические фигуры мультимедийной библиотеки SFML для разработки игр на C++

Время на прочтение3 мин
Количество просмотров13K

Перед тем как приступить к рассмотрению темы, геометрические фигуры, разберём каркас программы на С++, которая использует библиотеку SFML.

Для работы с кодом мы будем использовать Visual Studio 2022 и библиотеку SFML. Как подключить библиотеку SFML к Visual Studio 2022 вы можете узнать посмотрев видео инструкцию "Подключение библиотеки SFML C++"

Читать далее
Всего голосов 10: ↑7 и ↓3+4
Комментарии3

Причины, по которым 64-битные программы требуют больше стековой памяти

Время на прочтение5 мин
Количество просмотров27K

В форумах люди часто упоминают, что 64-битные версии программ поглощают больший объем памяти и стека. При этом обычно ссылаются на то, что размеры данных стали в 2 раза больше. Однако это необоснованное утверждение, так как размер большинства типов (char, short, int, float) в языке Си/Си++ остался прежним на 64-битных системах. Конечно, например, увеличился размер указателей, но ведь не все данные в программе состоят из указателей. Причины роста потребляемой памяти и стека более сложны. Я решил подробнее исследовать данный вопрос.

В данной заметке я поговорю о стеке, а в будущем планирую обсудить выделение памяти и размер двоичного кода. И еще хочу сразу заметить, что статья посвящена языку Си/Си++ и среде разработки Visual Studio.

Различия в использовании стека Win32 и Win64 приложениями
Всего голосов 85: ↑81 и ↓4+77
Комментарии31

Подключение и работа с MySQL в среде Visual C++

Время на прочтение4 мин
Количество просмотров54K
Совсем недавно мне необходимо было написать программу для удаленной работы с мускулом. В интернете, как не обидно, нашел лишь «скачайте бла-бла, подключите через include, и вот пример!». На практике не сработало, пришлось искать специалистов чтоб объяснили. Для исправления этого досадного отсутствия информации, выложу полное описание от «А» до «Я» по настройке и работе в среде Visual C++. Итак, приступим!

Данным образом настраивал Visual C++ 2008 и 2010. Т. к. особой разницы в интерфейсе разных версий визуалки нету, то и настройка проходит практически одинаково.

Для того что бы подключить БД, такую как мускул, и играться с ней на чистом API, нужно сначала установить или что бы было установлено такое ПО:
1. «Connector/C++»для 32-х розрядного приложения 32-х розрядный набор библиотек, а для 64-х соответственно 64-х битный набор (скачать можно здесь http://dev.mysql.com/downloads/connector/cpp/ ).
2. Дистрибутив мускула, у меня стоит MySQL Community Server 5.1.59 при установке нужно выбрать либо полную установку, либо выбрать самому весь набор, ну для разработки хватит набора DevCpp.
Читать дальше →
Всего голосов 8: ↑4 и ↓40
Комментарии10

Ускоряем OpenMP в Visual C++ 2010

Время на прочтение5 мин
Количество просмотров8.4K
Одним из популярных и дешёвых средств реализации многопоточных вычислений на языке C++ является OpenMP.

Достоинства технологии очевидны: простота; малые, и легко отключаемые изменения в коде; поддержка от авторов самых популярных компиляторов:
  • Visual C++
  • GCC 4.2
  • Intel C++ Compiler
Проверка боем проходит успешно, и вот распараллеленный код проникает в самые укромные уголки проекта, бьёт все рекорды производительности, выдавая шикарную статистику, подтверждающую успешность релиза.

Проходит пара лет, вы успешно мигрируете на Visual Studio 2010,… и обнаруживаете себя сидящим в луже. Если вчера обработка большого массива данных на машинах с многоядерными процессорами проходила за считанные секунды, то сегодня наличие любого фонового приложения, занимающего собственными вычислениями одно или несколько ядер, практически вешает приложение.

Почему так происходит, и как с этим бороться?

Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии8

Python, Модули, SWIG, Windows

Время на прочтение4 мин
Количество просмотров20K
Эта статья – описание моих экспериментов по сборке модулей для Python. Мне понадобился высокоуровневый интерфейс к библиотеке LibRaw, притом в первую очередь под Windows.

Последний раз модуль для питона на C++ я писал в 2004 году. Модуль к мертворожденной (к счастью не мной) библиотеке ( я тупо продавал свои умения за зарплату). Естественно, навыки не закрепились. Помню, что SWIG сильно облегчил мне работу, поскольку нужен был объектный интерфейс, а «ручками» его писать ломало. Память у меня профессиональная – то есть избирательная и короткая, поэтому пришлось прыгать сначала.

Это статья только про настройку SWIG для Python под Windows. Писать же модули на C/C++ с использованием SWIG гораздо проще, чем всё настроить (кстати, у меня такое впечатление, что это парадигма современного программирования).

Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии5

Обнаружены ошибки в библиотеках Visual C++ 2012

Время на прочтение11 мин
Количество просмотров3.4K
Одной из методик выявления ошибок в программах является статический анализ кода. Мы рады, что это методология становится всё более популярной. Во многом этому способствует Visual Studio, в которой статический анализ является одной из многих функциональных возможностей. Эту функциональность легко попробовать и начать регулярно использовать. Когда человек понимает, что ему нравится статический анализ кода, мы рады предложить ему профессиональный анализатор PVS-Studio для языков Си/Си++/Си++11.
Читать дальше →
Рейтинг0
Комментарии1

Что такое TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR (итд)

Время на прочтение12 мин
Количество просмотров337K


Многие C++ программисты, пишущие под Windows часто путаются над этими странными идентификаторами как TCHAR, LPCTSTR. В этой статье я попытаюсь наилучшим способом расставить все точки над И. И рассеять туман сомнений.

В свое время я потратил много времени копаясь в исходниках и не понимал что значат эти загадочные TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR.
Недавно нашел очень грамотную статью и представляю ее качественный перевод.
Статья рекомендуется тем кто бессонными ночами копошиться в кодах С++.

Вам интересно ??
Прошу под кат!!!
Читать дальше →
Всего голосов 91: ↑64 и ↓27+37
Комментарии85

Презентация Герба Саттера про Visual C++ и C++11 на конференции BUILD

Время на прочтение5 мин
Количество просмотров16K

Фото Channel9

Только что на Channel 9 закончилась презентация Герба Саттера на конференции BUILD в Редмонде. Кому интересен конспект его выступления с последними новостями про Visual C++ и C++11 в целом — прошу под кат.

Читать дальше →
Всего голосов 41: ↑36 и ↓5+31
Комментарии27

Дружим Python 3 с MS Visual C++. Строим мост в Boost.Python с автоматической перекодировкой

Время на прочтение9 мин
Количество просмотров14K
Всем доброго {daytime}!

Сегодня пришла пора рассказать вам о фундаментальной проблеме перекодировки при взаимодействии проекта собранного на MS Visual C++ на платформе Windows и наиболее приятной скриптовой обвязки для языка C++, благодаря библиотеке Boost.Python, собственно написанной для языка Python.

Вы ведь хотите использовать для вашего приложения на C++ под ОС Windows хорошую скриптовую обвязку на последней версии Python 3.x, либо вы хотите использовать для вашего приложения на Python максимально ускоренный участок кода вашего модуля, переписанный на C++. В обоих случаях, если вы знаете оба языка как минимум хорошо, вам стоит это прочитать.
Читать дальше →
Всего голосов 10: ↑8 и ↓2+6
Комментарии6

Microsoft избавится от телеметрии в Visual C++ в Update 3

Время на прочтение2 мин
Количество просмотров16K
image

Месяц назад Евгений Гречников grechnik опубликовал пост «Стандартная библиотека Visual Studio 2015 и телеметрия», в котором рассказал об интересной находке: оказалось, что в любом бинарнике, скомпилированном VS2015 из программы на C или C++, есть код, который может писать логи — и выглядело это всё слегка подозрительно, особенно в силу отсутствия исходников telemetry.cpp.

Три дня назад этот вопрос был снова поднят на Reddit, где время от времени в комментариях появляются разработчики Visual Studio — и вот сегодня общественности наконец-то удалось получить вполне себе официальный ответ от представителя Microsoft.

Самое важное: телеметрия будет убрана из статических библиотек в обновлении Update 3.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии14

Поиск явного приведения указателя к 32-битному типу

Время на прочтение3 мин
Количество просмотров10K
Тихоходка (лат. Tardigrada)
В компиляторе Visual Studio C++ имеется warning C4311 ('variable': pointer truncation from 'type' to 'type') предназначенный для выявления ошибок приведения указателя к 32-битным типам данных. В Intel C++ этому предупреждению соответствует warning #810. Пример обнаруживаемого дефекта:

void *ptr = x;
int y = (int)ptr;

В Win64 размер указателя стал 64-битным, а размер int остался по-прежнему 32 бита. Явное приведение типа обрежет значение указателя, что приведет к ошибке, если указатель ссылается на объект находящимся за пределами младших 4 Гбайт памяти (0x00000000FFFFFFFF).

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

Читать дальше →
Всего голосов 54: ↑43 и ↓11+32
Комментарии42

Слухи про WinC++

Время на прочтение5 мин
Количество просмотров1.1K
По интернету ходят невнятные слухи о неком WinC++. Толи это просто новое название Visual C++, толи нечто большее. Поскольку я заинтересован и озабочен тематикой Visual C++, то проявил к этой теме внимание. Мне попалась свежая статья от 4 мая «What is WinC++ and how does it figure in Microsoft's bid to make tools a $2 billion business?». Поскольку на русском языке пока про WinC++ тихо, я решил предложить Хабра-сообществу перевод этой статьи. Признаюсь, перевод вышел не очень, читается скучно. Поэтому многие, наверное, предпочтут познакомиться с оригиналом.

Прошу меня за эту статью не журить, как говорится первый блин комом. Полезное и главное в этой статье, пожалуй, то, что Microsoft явно не планирует хоронить Visual C++, а наоборот влить в это направление новые силы. На Си++ смотрят как на живой и развивающийся инструмент. Это радует (меня, по крайней мере :)).

Итак, собственно перевод статьи Мэри-Джо Фолли: Что такое WinC++ и как она связана со стремлением Microsoft поднять оборот продаж инструментов до 2 миллиардов долларов?

Читать дальше →
Всего голосов 36: ↑29 и ↓7+22
Комментарии129

Как мы пытаемся продать PVS-Studio в Google или очередные ошибки в Chromium

Время на прочтение14 мин
Количество просмотров53K
PVS-Studio интегрируется в Ninja для проверки Chomium.


Когда мы пишем статьи про проверки каких-либо проектов с помощью PVS-Studio, то, как правило, у нас прибавляется клиентов. Тут все честно. Программисты не любят рекламу, но охотно отзываются на интересные материалы, которые легко проверить. Поэтому мы не рекламируем свой инструмент, а просто показываем, что он умеет. Однако, хотя мы проверили код Chromium уже три раза и трижды находили в нем ошибки, ордера с почтой в google.com в моей почте до сих пор нет. Поскольку мне интересно, что я делаю не так, и почему Google пока не использует PVS-Studio, я решил написать очередную статью.

Эта статья состоит из двух частей. В первой рассказывается об инфраструктуре проекта Chromium и нюансах интеграции, во второй приведены очередные найденные ошибки.

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

Хотите узнать, почему разрабатывать Chromium сложно и далеко не каждый инструмент для программистов может быть использован в проекте Chromium? Тогда читаем…

Читать дальше →
Всего голосов 326: ↑293 и ↓33+260
Комментарии205

Arcanum и Fallout 2 с сенсорным экраном и стилусом в Windows 8

Время на прочтение7 мин
Количество просмотров59K
Как-то так вышло, что завелся у меня Windows 8 планшет. Не очень удачная модель — громоздкий как помощник, слабоватый как рабочая станция, но зато с стилусом, а самое важное, с 32-битной Win32 системой. Имея некое количество старых игр с распродаж GOG и Steam, я планировал как-нибудь засесть с этой таблеткой и переиграть все, что можно и нельзя. Но вот как-то не хватало времени и настроения, да еще и пробные запуски показали, что играть надо с мышью — курсор от тач-скрина убегал неизвестно куда, да и правый клик долгим нажатием был бы откровенно неудобным. Планшет пылился пол-года в углу до недавней раздачи Fallout от GOG и эта раздача подтолкнула меня к действию. Начинался вечер пятницы, планшет обзавелся USB мышью, а я устроился поудобнее на диване и начал по списку с самого верха — с Arcanum.
Через пол-часа создания персонажа (а ведь это дело очень важное и ответственное!) левая рука с трудом держала устройство, а запястье правой подозрительно начало тянуть, намекая о туннельном синдроме и прочих радостях неудобного хвата. Вспомнив нехорошим словом разработчиков некой эргономичной складывающейся мыши, я полез искать драйвера, патчи или еще хоть что-то, чтобы играть с тачскрина или хотя бы стилуса.
Патчей не нашлось. Единственный похожий драйвер был платным и без пробного режима. Вот в этот момент в голову и пришла идиотская (это я теперь понимаю!) мысль — «там ведь наверняка приходит какой-то WM_TOUCH и неправильно преобразуется в WM_MOUSEMOVE»… Забегая вперед, Арканум теперь у меня полностью управляется с тачскрина, правда, выходные закончились и больше хочется спать, чем играть.
Как не надо проводить викэнд
Всего голосов 93: ↑86 и ↓7+79
Комментарии23

PVS-Studio для Visual C++

Время на прочтение9 мин
Количество просмотров9.4K
PVS-Studio small
Очень давно все наши статьи стали посвящаться чему угодно, но только не самому инструменту PVS-Studio. Мы рассказываем о проверенных проектах, о тонкостях языка Си++, о создании плагинов на C#, о запуске PVS-Studio из командной строки. А ведь в первую очередь PVS-Studio ориентирован на разработчиков, использующих Visual Studio. Мы очень много сделали, чтобы им было удобно пользоваться нашим инструментом. Но как раз это часто оказывается за кадром. Решил исправить эту ситуацию и рассказать с чистого листа о плагине PVS-Studio. Если вы используете Visual C++, эта статья для вас.
Читать дальше →
Всего голосов 35: ↑29 и ↓6+23
Комментарии23