повысить предупреждение microsec_time_clock.hpp C4244 - PullRequest
0 голосов
/ 28 августа 2009

Я новичок в использовании boost и у меня проблема. Мне нужна функция shared_mutex в моем проекте. Итак, я сделал

#include "boost/thread/shared_mutex.hpp"

И скомпилировал мой проект. Мой MSVC 2005 с «обрабатывать предупреждения как ошибки» останавливает компиляцию из-за предупреждения:

c:\\...\microsec_time_clock.hpp(103) : warning C4244: 'argument' : conversion from 'int' to 'unsigned short', possible loss of data

Я понятия не имею, почему shared_mutex нуждается в микросекундной функции (я читал, что библиотеки boost имеют довольно большой список зависимостей), но я не могу скомпилировать свой проект. Я немного погуглил, нашел ту же проблему, но не решил.

ОБНОВЛЕНИЕ: сейчас я компилирую boost, но я хочу добавить все источники в мой проект с открытым исходным кодом, включая boost.thread.shared_mutex.

Ответы [ 2 ]

2 голосов
/ 29 августа 2009

Различные библиотеки Boost генерируют все виды предупреждений в сборках Visual Studio на уровне 4. Мы просто отключаем их.

Например, один из наших предварительно скомпилированных заголовочных файлов имеет:

#pragma warning(push, 0)
#include <boost/asio.hpp>
#include <boost/asio/streambuf.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/noncopyable.hpp>
#include <boost/thread.hpp>
#include <boost/scoped_ptr.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/system/error_code.hpp>
#include <boost/xpressive/xpressive.hpp>
#pragma warning(pop)
0 голосов
/ 29 августа 2009

Держу пари, что они делают + = на неподписанном шорте. Результат сложения преобразуется в int неявным образом, а затем должен быть возвращен обратно к беззнаковому короткому значению для назначения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...