LINUX.ORG.RU

MyGUI - избавиться от предупреждений

 


0

1

C++, MyGUI, Ogre
Собственно при компиляции, тучкой идут такие предупреждения:

../Game.cpp:212:94: предупреждение: «MyGUI::delegates::CMultiDelegate1<TP1>& MyGUI::delegates::CMultiDelegate1<TP1>::operator=(MyGUI::delegates::CMultiDelegate1<TP1>::IDelegate*) [with TP1 = MyGUI::Widget*, MyGUI::delegates::CMultiDelegate1<TP1>::IDelegate = MyGUI::delegates::IDelegate1<MyGUI::Widget*>]» is deprecated (declared at /usr/include/MYGUI/MyGUI_DelegateImplement.h:356) [-Wdeprecated-declarations]
Как исправить не пойму...

А код такой:
virtual void PlayButton(MyGUI::Widget* _widget);

playButton = window->createWidget<MyGUI::Button>("Button_BlackTheme", 20, 174, 200, 26, MyGUI::Align::Default);
playButton->eventMouseButtonClick = MyGUI::newDelegate(this, &Workingwithogre::PlayButton);
playButton->setCaption("Play animation");

void Game::PlayButton(MyGUI::Widget* _widget) {}



Последнее исправление: raycast (всего исправлений: 5)
Ответ на: комментарий от nickionn

Работать то работает, но хотелось бы с предупреждениями таки разобраться.

raycast
() автор топика
Ответ на: комментарий от frozenix
#elif MYGUI_COMPILER == MYGUI_COMPILER_GNUC
     #if MYGUI_PLATFORM == MYGUI_PLATFORM_LINUX && MYGUI_COMP_VER < 310 // gcc 3.1
         #define MYGUI_OBSOLETE_START(text)
         #define MYGUI_OBSOLETE_END
     #else
         #define MYGUI_OBSOLETE_START(text)
         #define MYGUI_OBSOLETE_END __attribute__((deprecated))
     #endif
 
 #else

// ...
 
 #define MYGUI_OBSOLETE(text)  MYGUI_OBSOLETE_START(text)MYGUI_OBSOLETE_END

Было бы хорошо повесить на MYGUI_OBSOLETE_START какой-то вывод сообщения.

frozenix ★★★
()
Ответ на: комментарий от raycast

помечает код, как неодобренный. делай вместо:

playButton->eventMouseButtonClick = MyGUI::newDelegate(this, &Workingwithogre::PlayButton);
вот так:
playButton->eventMouseButtonClick += MyGUI::newDelegate(this, &Workingwithogre::PlayButton);

frozenix

 MYGUI_OBSOLETE("use : operator += ")
         MYGUI_C_MULTI_DELEGATE  MYGUI_TEMPLATE_ARGS& operator=(IDelegate* _delegate)
         {
             clear();
             *this += _delegate;
             return *this;
         }
jeuta ★★★★
()
Ответ на: комментарий от nickionn

Программы с такими сообщениями долго работать не будут.

frozenix ★★★
()
Ответ на: комментарий от raycast

Там показано, что макрос MYGUI_OBSOLETE() с любым параметром будет раскрыт в __attribute__((deprecated)). __attribute__ - ключевое слово GCC и clang, заставляет компилятор кидать варнинг при использовании данной функции - т.е. тем самым объявляется, что функция считается устаревшей и может исчезнуть в будущих версиях.

Зачем макросу передаётся параметр-строка - не знаю, видать в каких-то компиляторах можно приклеить к сообщению о deprecated подробное описание, почему оно deprecated.

Кстати, есть подозрения, что если вы скомпилируете код с clang - то там таки-будет предупреждение «use: operator +=», ибо в clang есть такое расширение.

quiet_readonly ★★★★
()
Ответ на: комментарий от quiet_readonly

заставляет компилятор кидать варнинг при использовании данной функции

это про __attribute__((deprecated)), а не __attribute__ вообще

quiet_readonly ★★★★
()

/usr/include/MYGUI/MyGUI_DelegateImplement.h:356

А там небось __attribute__((deprecated)), проверь.

anonymous
()
Ответ на: комментарий от anonymous
#if MYGUI_COMPILER == MYGUI_COMPILER_MSVC
    #if MYGUI_COMP_VER < 1310 // VC++ 7.1
        #define MYGUI_OBSOLETE_START(text)
        #define MYGUI_OBSOLETE_END
    #else
        #define MYGUI_OBSOLETE_START(text) __declspec(deprecated(text))
        #define MYGUI_OBSOLETE_END
    #endif

#elif MYGUI_COMPILER == MYGUI_COMPILER_GNUC
    #if MYGUI_PLATFORM == MYGUI_PLATFORM_LINUX && MYGUI_COMP_VER < 310 // gcc 3.1
        #define MYGUI_OBSOLETE_START(text)
       #define MYGUI_OBSOLETE_END
    #else
        #define MYGUI_OBSOLETE_START(text)
        #define MYGUI_OBSOLETE_END __attribute__((deprecated))
    #endif
 
#else
    #define MYGUI_OBSOLETE_START(text)
    #define MYGUI_OBSOLETE_END
#endif

У них этот фрагмент довольно странно выглядит.

Кстати, автору на заметку: MyGUI делали русские, мог бы с ними связятся

frozenix ★★★
()
Ответ на: комментарий от frozenix

#warning выводится в любом случае, сообщение внутри deprecated должно выводиться при использовании функции. Впрочем я тоже сперва подумал про #warning.

quiet_readonly ★★★★
()
Ответ на: комментарий от frozenix

Кстати, автору на заметку: MyGUI делали русские, мог бы с ними связятся

Да я знаю что Русские, я им дизайн делал. Но тревожить их по каждому чиху не хочется, и без меня работы куча.

raycast
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.