Как избавиться от «Спецификация исключения C ++ игнорируется» предупреждение
-
01-10-2019 - |
Вопрос
Я недавно получил DLL, которая была реализована другими. Я должен использовать его в моем приложении. В заголовом файле своего класса у них есть объявление функции
void func1() throw (CCustomException);
Теперь, когда я собираюсь, это получаю предупреждение,
Спецификация исключения C ++ игнорируется, кроме как для указания функции не является _declspec (Nothrow)
Я прочитал MSDN - Документация Но не мог понять это ясно. Кроме того, я не хочу отключить предупреждение только потому, что он отображается. Я хочу знать, что я делаю не так, вместо того, чтобы отключить его.
Я думал, что моя функция, сказать myfunc()
Доступ к этому func1()
От DLL не имеет этого списка спецификации исключений. Следовательно, я попытался получить соответствующий список спецификаций исключения в моей функции тоже как,
void myfunc1() throw (CCustomException);
Но я все еще получаю предупреждение. Что это предупреждение, и как избавиться от этого? Я использую Qt 4.5 в Windows XP.
Решение
Хорошо, это не ответ, но я бы выбросить спецификацию исключения и никогда не используйте его снова.
Редактировать: я слишком быстро читаю, и я не видел, что ты не писал класс сами. Лучший способ избавиться от предупреждений в MSVC - через #PRAGMA ПРЕДУПРЕЖДЕНИЕ (push), а затем #pragma Предупреждение (отключить: xxxx), где XXXX является предупреждением:
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable:xxxx)
#endif
...
#ifdef _MSC_VER
#pragma warning(pop)
#endif
Редактировать: Это совершенно безопасно, чтобы отключить предупреждение. Технические характеристики исключений являются злом, и компилятор рассказывает только вам, что это отключает их для вас. Даже если это нарушает стандарт.
Другие советы
Вы можете попробовать играть с препроцессором:
#ifdef _SOME_MSVC_DEFINE
# define _throw(foo)
#else
# define _throw(foo) throw(foo)
#endif
void myfunc1() _throw (CCustomException);
Или попробуйте отключить это предупреждение в Visual Studio.
я нашел это связь, который я нашел полезным. Просто добавил, если это может быть полезно кому-то ..