Как я могу избежать этого предупреждения с boost: gil: png_write_view на x64

Следующий код выдает предупреждение:

boost::gil::rgb8_image_t img(10, 10);
boost::gil::png_write_view("TenByTen.png", view(img));

при компиляции с VS 2010 под 64 бит. Это говорит:

\boost\gil\extension\io\png_io_private.hpp(341): warning C4244: 'argument' : conversion from '__int64' to 'png_uint_32', possible loss of data
\boost\gil\extension\io\png_io.hpp(202) : see reference to function template instantiation 'void boost::gil::detail::png_writer::apply<View>(const View &)' being compiled
with
[
View=boost::gil::image_view<boost::gil::rgb8_loc_t>
]
main.cpp(20) : see reference to function template instantiation 'void boost::gil::png_write_view<boost::gil::image_view<Loc>>(const char *,const View &)' being compiled
with
[
Loc=boost::gil::rgb8_loc_t,
View=boost::gil::image_view<boost::gil::rgb8_loc_t>
]

Кажется совершенно очевидным, что в apply () вызов png_set_IHDR () должен дать png_uint_32, но view.width () представляется подписанным __int64 (возможно, ptrdiff_t).

Кто-нибудь знает, что я мог с этим поделать?
Я предполагаю, что boost: gil предназначен для работы под 64 битами.

Я использую Boost 1_50.

1

Решение

Кажется, что конкретная проблема известна из (по крайней мере) Boost v1.35 (например, http://objectmix.com/c/733997-how-use-graphics.html#post2586573).

проверка Boost trac база данных Я вижу похожие билеты для других модулей, но ничего для GIL.
Наверное, лучше всего открыть новый билет.

Между тем, поскольку это не кажется «катастрофическим», вы можете обернуть #include(s) таким образом:

#ifdef _MSC_VER
#  pragma warning(push)
#  pragma warning(disable: 4244)  // Perhaps also 4100, 4127, 4512
// GIL headers
#  pragma warning(pop)
#endif

Смотрите также Как: включить и отключить анализ кода для определенных предупреждений C / C ++

(с Clang / GCC у вас есть -isystem переключиться, но я не думаю, что Visual Studio позволяет различать файлы приложений / заголовков)

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector