Определил свой тип:
#include <list>
...
typedef std::string mystr;
typedef std::list<mystr> mystrlist;
...
И в коде только создаю переменную типа "mystrlist", т.е. ни каких операций с ней не провожу, а копилятор выдает:
c:\program files\microsoft visual studio .net\vc7\include\list(855) : warning C4702: unreachable code
c:\program files\microsoft visual studio .net\vc7\include\list(856) : warning C4702: unreachable code
c:\program files\microsoft visual studio .net\vc7\include\list(857) : warning C4702: unreachable code
c:\program files\microsoft visual studio .net\vc7\include\list(858) : warning C4702: unreachable code
почему так?
18.09.03 14:10: Перенесено модератором из 'C/C++' — ПК
C>typedef std::list<mystr> mystrlist;
C>...
C>И в коде только создаю переменную типа "mystrlist", т.е. ни каких операций с ней не провожу, а копилятор выдает:
C>c:\program files\microsoft visual studio .net\vc7\include\list(855) : warning C4702: unreachable code
Ты бы показал строки до и после создания mystrlist. Обычно такой варнинг возникает в коде типа
if(TRUE)
...
else
{
mystrlist sl1, sl2;
....
}
Здравствуйте, SWW, Вы писали:
SWW>Ты бы показал строки до и после создания mystrlist. Обычно такой варнинг возникает в коде типа
SWW>SWW>if(TRUE)
SWW> ...
SWW>else
SWW> {
SWW> mystrlist sl1, sl2;
SWW> ....
SWW> }
SWW>
Я создаю ее в классе:
#include "Types.h"
class CMyClass
{
public:
mystrlist list;
};
где Types.h:
#include <string>
#include <list>
typedef std::string mystr;
typedef std::list<mystr> mystrlist;
Вот:
/*855*/if(0<_Linkcnt)
/*856*/ this->_Alptr.destroy(&_Next(_Pnode));
/*857*/this->_Alnod.deallocate(_Pnode, 1);
/*858*/_RERAISE;
и, что это даст — не перелапачивать ведб весь "list"
Здравствуйте, Calavera, Вы писали:
C>Вот:
C>C>/*855*/if(0<_Linkcnt)
C>/*856*/ this->_Alptr.destroy(&_Next(_Pnode));
C>/*857*/this->_Alnod.deallocate(_Pnode, 1);
C>/*858*/_RERAISE;
C>
C>и, что это даст — не перелапачивать ведб весь "list"
Ха ! А я знаю, в чём прикол !
Я же просил привести строки в контексте. К счастью, в VC7.1 этот код сохранился, и выглядит он так :
_TRY_BEGIN
что-то делается...
_CATCH_ALL
if (0 < _Linkcnt)
this->_Alptr.destroy(&_Nextnode(_Pnode));
this->_Alnod.deallocate(_Pnode, 1);
_RERAISE;
_CATCH_END
Как и следовало ожидать, _CATCH_ALL переходит в } catch (...) { если в проекте разрешены исключения, и в } if (0) { если нет. Теперь понятно, где нашёлся unreachable code, и понятно, что надо сделать — разрешить обработку исключений.