Как избавиться от «Спецификация исключения C ++ игнорируется» предупреждение

StackOverflow https://stackoverflow.com/questions/3140875

Вопрос

Я недавно получил 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.

я нашел это связь, который я нашел полезным. Просто добавил, если это может быть полезно кому-то ..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top