c++调试出现undeclared identifier

c++调试出现undeclared identifier

#include "StdAfx.h"
#include "edgedetection.h"
#include <assert.h>
#include <math.h>
const int cnt_direction[8][2] = {{0, -1}, {1, -1}, {1, 0}, {1, 1},
{0, 1}, {-1, 1}, {-1, 0}, {-1, -1}};
//const POINT cnt_directionStep[8] = {{},
//};

CEdgeDetection::CEdgeDetection(void)
: m_pDataBuf(0)
, m_iHeight(0)
, m_iWidth(0)
, m_pEdge(0)
, m_iRegion(0)
{
RenewEdgePropertyArray();
}

CEdgeDetection::~CEdgeDetection(void)
{
SAFE_DELETE_ARRAY(m_pDataBuf);
SAFE_DELETE_ARRAY(m_pEdge);
}

// 重新初始化边界属性数组
void CEdgeDetection::RenewEdgePropertyArray(void)
{
for(int i = 0; i < IRIGIONNUMBER; i++)
{
ZeroRegionproperty(m_pRegionP[i]);
}
m_iRegion = 0;

}
// 初始化数据区,如果数据区大小没有变,则只填充数据区
//同时初始化边界检测的结果
void CEdgeDetection::SetDataBuf(LPBYTE pInData, int iInDataBits, int iHeight, int iWidth)
{
assert(pInData);
int iSizeData = iHeight * iWidth;
if(m_iHeight != iHeight || m_iWidth != iWidth)
{
SAFE_DELETE_ARRAY(m_pDataBuf);
SAFE_DELETE_ARRAY(m_pEdge);
m_iHeight = iHeight;
m_iWidth = iWidth;
//iSizeData = m_iHeight * m_iWidth;
m_pDataBuf = new BYTE[iSizeData];
m_pEdge = new BYTE[iSizeData];
}
assert(m_pDataBuf);
assert(m_pEdge);
for(int i = 0; i < iSizeData; i++)
{
m_pDataBuf[i] = *pInData;
pInData += iInDataBits;
}
memset(m_pEdge, 0, iSizeData);
}

// 边界检测后的数据区
LPBYTE CEdgeDetection::GetEdgeBuf(void)
{
return LPBYTE(m_pEdge);
}

// 提供模糊检测的边界结果
LPBYTE CEdgeDetection::FuzzyEdge(int iEnhanceTimes, double dbMemershipC)
{
int iSizeData = m_iHeight * m_iWidth;
double* pMemershipArray = new double[iSizeData];
assert(pMemershipArray);
memset(pMemershipArray, 0, iSizeData * sizeof(double));
//计算隶属度矩阵
CalcMembership(pMemershipArray);
//非线性增强隶属度矩阵,增强次数iEnhanceTimes
for(int i = 0; i < iEnhanceTimes; i++)
NonlinearEnhance(pMemershipArray, iSizeData, dbMemershipC);
// 从隶属度映射到空间域,结果于m_pEdge中
ReverseMemership(pMemershipArray);
//计算边界
CalcEdges();
////归一化边界
//StandEdge();
return LPBYTE(m_pEdge);
}

这是我程序中的一部分,可是编译后出现:
EdgeDetection.cpp(22) : error C2065: 'SAFE_DELETE_ARRAY' :undeclared identifier
这是怎么回事呢?谁能告诉我一下啊!!

第1个回答  推荐于2018-03-29
'SAFE_DELETE_ARRAY' :undeclared identifier
是说SAFE_DELETE_ARRAY这个符号没有定义
你定义一个SAFE_DELETE_ARRAY宏就是了:

#ifndef SAFE_DELETE_ARRAY
#define SAFE_DELETE_ARRAY(p) {if(p) {delete[] p; p=NULL;}}
#endif本回答被提问者和网友采纳
第2个回答  2007-12-14
undeclared identifier原因是SAFE_DELETE_ARRAY未定义
第3个回答  2007-12-14
#define SAFE_DELETE_ARRAY(p) {if(p) {delete[] (p);(p)=NULL;}}

把这句话加在#include <math.h> 后面
相似回答