场景
添加海康、宇视SDK对接头文件和库文件,编译错误提示error C20593:语法错误3360“常量”。 宏定义异常显示在宇视SDK头文件NetDEVSDK.h中
typedefenumtagnetdev _ passive decode _ cmd
{
PASSIVE_DEC_PAUSE=1,/*被动解码暂停(仅文件流有效) /
PASSIVE_DEC_RESUME=2,/*恢复被动解码(仅文件流有效) /
PASSIVE_DEC_FAST=3,/*高速被动解码(仅文件流有效) /
PASSIVE_DEC_SLOW=4,/*低速被动解码(仅文件流有效) /
PASSIVE_DEC_NORMAL=5,/*常规被动解码(仅文件流有效) /
PASSIVE_DEC_ONEBYONE=6,/*被动解码1帧播放(预约) /
PASSIVE_DEC_AUDIO_ON=7,/*音频开*/
PASSIVE_DEC_AUDIO_OFF=8,/*音频关闭*/
PASSIVE_DEC_RESETBUFFER=9 /*清空缓冲区*/
}NETDEV_PASSIVEDECODE_CMD_E;
netdevSDK.h(5082 ) :错误c 2059:语法错误:“常量”
netdevSDK.h(5091 ) : error C2143:语法错误:“; () )之前) ) ) ) )。
将鼠标置于PASSIVE_DEC_PAUSE上时,显示错误信息:#define PASSIVE_DEC_PAUSE 1
故障诊断流程
在Notepad中,通过宏定义整个项目目录来搜索PASSIVE_DEC_PAUSE,我们发现HCNetSDK.h已经定义在hankan头文件中
#define PASSIVE_DEC_PAUSE 1 /*被动解码超时(仅启用文件流) /
#define PASSIVE_DEC_RESUME 2 /*恢复被动解码(仅启用文件流) /
#define PASSIVE_DEC_FAST 3 /*高速被动解码(仅文件流有效) /
#define PASSIVE_DEC_SLOW 4 /*低速被动解码(仅文件流有效) /
#define PASSIVE_DEC_NORMAL 5 /*常规被动解码(仅文件流有效) /
#define PASSIVE_DEC_ONEBYONE 6 /*被动解码帧播放*/
#define PASSIVE_DEC_AUDIO_ON 7 /*音频开*/
# define passive _ dec _ audio _ of F8/*音频关闭*/
# define passive _ dec _ reset buffer9/*清空缓冲区*/
所以,会出现上面的提示错误
解决方案
在宇视SDK头文件中找不到NETDEV_PASSIVEDECODE_CMD_E宏定义的使用,请直接注释掉整个宏定义以解决问题