定义宏HG_IS_IMAGE,if (HG_IS_IMAGE(img))出现非法的转义序列

听风者868 2017-11-25 09:43:29
#define HG_IS_IMAGE(img)\((img) != 0 && ((const IplImage*)(img))->nSize == sizeof(IplImage) && \((IplImage*)img)->imageData != 0)
void CvvImage::CopyOf(IplImage* img, int desired_color)
{
if (HG_IS_IMAGE(img))
{
int color = desired_color;
CvSize size = cvGetSize(img);
if (color < 0)
color = img->nChannels > 1;
if (Create(size.width, size.height,
(!color ? 1 : img->nChannels > 1 ? img->nChannels : 3) * 8,
img->origin))
{
cvConvertImage(img, m_img, 0);
}
}
}
错误4error C2017: 非法的转义序列 d:\programcode\vs2013\imgcapturedlg\test\03\02\cvvimage.cpp 124 1 02
...全文
187 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2017-11-27
  • 打赏
  • 举报
回复
非法的转移序列通常都是 "\" 之后出现了其他非合法的转义字符,或者混入了非 ASCII 字符,比如看不见的中文(全角)空格,中文标点等。看你的第一行,有两个反斜线 "\":
#define HG_IS_IMAGE(img)\((img) != 0 && ((const IplImage*)(img))->nSize == sizeof(IplImage) && \((IplImage*)img)->imageData != 0)
一行内是不需要这些的,而且你的宏名称和宏体之间得有一个空格吧,就用一个斜线分分隔?如果你想分多行写书,记得加空格:
#define HG_IS_IMAGE(img) \
        ((img) != 0 && ((const IplImage*)(img))->nSize == sizeof(IplImage) && \
        ((IplImage*)img)->imageData != 0)
听风者868 2017-11-27
  • 打赏
  • 举报
回复
谢谢

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧