C++ 코드를 VS2008에서 VS2010으로 마이그레이션 할 때 문제가 발생했습니다. 나는 지금까지 그 이유에 대한 설명을 찾을 수 없으며 당신의 도움에 감사 할 것입니다.VS2008에서 VS 2010으로 마이그레이션 - 급격한 변화?
우리는 사용자 지정 메모리 할당자를 가지고 있으며 dll에 있습니다. 나머지 코드에서는 전처리기를 사용하여 할당을 함수로 리디렉션합니다. Thie 다음의 간단한 코드는 VS2008에서 올바르게 컴파일되지만 VS2010에서는 올바르게 컴파일되지 않습니다. stdafh.h에서
:
1>d:\program files\microsoft visual studio 10.0\vc\include\xdebug(62): error C3861: 'free': identifier not found
이 라인에서 오는 : VS2010에서
#define free my_free
#include <string>
내가 얻을
template<class _Ty>
void __CLRCALL_OR_CDECL _DebugHeapDelete(_Ty *_Ptr)
{ // delete from the debug CRT heap even if operator delete exists
if (_Ptr != 0)
{ // worth deleting
_Ptr->~_Ty();
// delete as _NORMAL_BLOCK, not _CRT_BLOCK, since we might have
// facets allocated by normal new.
free(_Ptr);
어떤 도움이나 아이디어가 높게 평가 될 것이다! 는 C++ ISO 표준에 따라 모세
그래서 STL에 어떤 영향을 미칠 수없는 것처럼 보입니다. 그래서 #define을 문자열 include 다음에 넣으십시오. –