(Функция — известная обертка над Recordset из ADO)
Почему он считает что секция catch недостижима? Ведь метод m_pRecordset->PutSort не объявлен ни как __declspec(nothrow), ни как throw()
и, конечно, не является extern "C" функцией.
Переменная m_pRecordset является экземпляром класса, сгенерированным директивой #import.
Такие предупреждения появляются только в RELEASE-конфигурации, в DEBUG их нет, хотя в обоих случаях стоит /W4 и /EHsc.
Здравствуйте, dmitry_npi, Вы писали:
_>Такие предупреждения появляются только в RELEASE-конфигурации, в DEBUG их нет, хотя в обоих случаях стоит /W4 и /EHsc.
Возможно всё подставляется, и выясняется, что код недостижим?
Попробуй подавить подстановки в этом месте и посмотреть останется ли предупреждение?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
... _>(Функция — известная обертка над Recordset из ADO) _>Почему он считает что секция catch недостижима? Ведь метод m_pRecordset->PutSort не объявлен ни как __declspec(nothrow), ни как throw() _>и, конечно, не является extern "C" функцией.
offtopic: extern "C" функция может выбрасывать исключения. extern "C" говорит С++ компилятору только чтобы он не декорировал имя функции.
Здравствуйте, alsemm, Вы писали: A>offtopic: extern "C" функция может выбрасывать исключения. extern "C" говорит С++ компилятору только чтобы он не декорировал имя функции.
Здравствуйте, dmitry_npi, Вы писали:
A>>offtopic: extern "C" функция может выбрасывать исключения. extern "C" говорит С++ компилятору только чтобы он не декорировал имя функции.
_>Я же не сам это придумал... здесь
Здравствуйте, Roman Odaisky, Вы писали:
RO>rtfm /EHc.
Там же всё и написано:
If you feel that this warning is not valid because a function can throw, compile with /EHa or /EHs, depending on the exception thrown
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, Roman Odaisky, Вы писали:
RO>rtfm /EHc.
Однако, не помогают никакие варианты этого /EHxx. Но опытным путем я выяснил, что при отключенной оптимизации (которая в релизе стоит /O2), этих предупреждений нет. Точнее говоря, в появлении предупреждений повинна опция-компонент O2 — /Og. Но она deprecated в VC2005. И при ее устранении (/Og-) соответственно появляются предупреждения. Так что же делать?
Здравствуйте, dmitry_npi, Вы писали:
_>Компилятор (VC++8.0) выдает предупреждение C4702: unreacheable code в такого вида функциях:
Имеет большой смысл посмотреть дизассемблер, чтобы понять, что компилятор выкинул. Я бы это так просто не оставлял, ибо обычно код компилятор выкидывает не просто так...
It's kind of fun to do the impossible (Walt Disney)