Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> boost::serialization, как убрать warning'и 
V
    Опции темы
volatile
Дата 31.1.2011, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



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

#include "stdafx.h"
#define _SCL_SECURE_NO_WARNINGS
#include <fstream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>

class test
{
    friend class boost::serialization::access;
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & val;
    }
    int val;
};

int _tmain(int argc, _TCHAR* argv[])
{
   test a;
   std::ofstream ofs("name.txt", std::ios::out);
   boost::archive::text_oarchive oa(ofs);
   oa << a;
   return 0;
}


Вот эта программка компилится, но выдаёт воринг на 50 строк.
Код

1>Compiling...
1>vingrad.cpp
1>C:\MSVS2008\MYADD\MY\INCLUDE\boost/mpl/print.hpp(51) : warning C4308: negative integral constant converted to unsigned type
1>        C:\MSVS2008\MYADD\MY\INCLUDE\boost/serialization/static_warning.hpp(92) : see reference to class template instantiation 'boost::mpl::print<T>' being compiled
1>        with
1>        [
1>            T=boost::serialization::STATIC_WARNING_LINE<98>
1>        ]
1>        C:\MSVS2008\MYADD\MY\INCLUDE\boost/archive/detail/check.hpp(98) : see reference to class template instantiation 'boost::serialization::static_warning_test<B,L>' being compiled
1>        with
1>        [
1>            B=false,
1>            L=98
1>        ]
--cuted--

Как вы догадались компилю на VS2008
Что посоветуете?

PM MAIL   Вверх
boostcoder
Дата 31.1.2011, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(volatile @  31.1.2011,  23:21 Найти цитируемый пост)
Буст выдает воринг

враки.

это:
Код

#include <fstream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>

class test
{
    friend class boost::serialization::access;
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & val;
    }
    int val;
};

int main(int argc, char** argv)
{
   test a;
   std::ofstream ofs("name.txt", std::ios::out);
   boost::archive::text_oarchive oa(ofs);
   oa << a;
   return 0;
}


+ g++-4.5.2 = ни одного варнинга.

Добавлено через 4 минуты и 39 секунд
может это что-то специфичное для msvc2008 ?

Это сообщение отредактировал(а) boostcoder - 31.1.2011, 23:43
PM WWW   Вверх
volatile
Дата 31.1.2011, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



boostcoder, охотно верю что 
Цитата(boostcoder @  31.1.2011,  23:42 Найти цитируемый пост)
+ g++-4.5.2 = ни одного варнинга.

Но от этого мне не легче.
Может кто работал на студии с бустом, посоветуют.
Задефайнить что-то нужно видимо, но что не знаю.

PM MAIL   Вверх
boostcoder
Дата 1.2.2011, 00:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(volatile @  31.1.2011,  23:21 Найти цитируемый пост)
boost/archive/detail/check.hpp(98) : see reference to class template instantiation 'boost::serialization::static_warning_test<B,L>' being compiled

в 98ой строке это:
Код

template<class T>
inline void check_object_tracking(){
    // presume it has already been determined that
    // T is not a const
    BOOST_STATIC_ASSERT(! boost::is_const< T >::value);
    typedef BOOST_DEDUCED_TYPENAME mpl::equal_to<
        serialization::tracking_level< T >,
        mpl::int_<serialization::track_never>
    >::type typex;
    // saving an non-const object of a type not marked "track_never)

    // may be an indicator of an error usage of the
    // serialization library and should be double checked.  
    // See documentation on object tracking.  Also, see the 
    // "rationale" section of the documenation
    // for motivation for this checking.

    BOOST_STATIC_WARNING(typex::value); // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}

но в вашем примере все справедливо.
есть мысль, закомментировать строку "oa << a;" в примере. что говорит в этом случае?
PM WWW   Вверх
volatile
Дата 1.2.2011, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(boostcoder @  1.2.2011,  00:01 Найти цитируемый пост)
есть мысль, закомментировать строку "oa << a;" в примере. что говорит в этом случае? 

Если закоментить эту строку, то ворингов нет. 
и?
PM MAIL   Вверх
volatile
Дата 1.2.2011, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Но это не решение же...
PM MAIL   Вверх
boostcoder
Дата 1.2.2011, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(volatile @  1.2.2011,  01:38 Найти цитируемый пост)
Но это не решение же...

 smile 
ну нет у меня ни вендус, ни микрософтстудии.
устанавливаю на виртуалку, все равно нужна временами.

Это сообщение отредактировал(а) boostcoder - 1.2.2011, 02:10
PM WWW   Вверх
semensemenov
Дата 1.2.2011, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 16.2.2010

Репутация: нет
Всего: нет



может поможет деректива
#pragma warning(disable : номер варнинга)
PM MAIL   Вверх
bsa
Дата 1.2.2011, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Думаю еще зависит от версии буста. У меня такое появилось в версии 1.41. Компилятор gcc

Это сообщение отредактировал(а) bsa - 1.2.2011, 18:33
PM   Вверх
bsa
Дата 1.2.2011, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Проблема решается добавлением в код:
Код
BOOST_CLASS_TRACKING(MyClass, boost::serialization::track_never);

PM   Вверх
volatile
Дата 1.2.2011, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



bsa, да это работает!  smile 
В моем случае, вставил перед main
Код

BOOST_CLASS_TRACKING(test, boost::serialization::track_never);

int _tmain(int argc, _TCHAR* argv[])
{
   test a;
   std::ofstream ofs("name.txt", std::ios::out);
   ...
И ни одного воринга!

Пинок (в хорошем смысле этого слова smile ) в верном направлении дан, буду разбираться дальше.
bsa, спасибо.

PM MAIL   Вверх
bsa
Дата 1.2.2011, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



volatile, в документации написано, в разделе tracking. Это предупреждение нужно, чтобы ты не допустил ошибки при двойной сериализации одного объекта в один архив.
PM   Вверх
volatile
Дата 2.2.2011, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



ок, bsa! гланое знать что читать. А то в тоннах докуметации можно затеряться.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.