c++中结构体套结构体用 = {0}初始化编译报错解决办法(用memset或者={})(error: invalid conversion)
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中结构体套结构体用 = {0}初始化编译报错解决办法(用memset或者={})(error: invalid conversion)相关的知识,希望对你有一定的参考价值。
我这有个结构体:
VENC_CHN_ATTR_S venc_chn_attr;
/* the attribute of the venc chnl*/
typedef struct rkVENC_CHN_ATTR_S //视频编码通道属性结构体
VENC_ATTR_S stVencAttr; // the attribute of video encoder
VENC_RC_ATTR_S stRcAttr; // the attribute of rate ctrl
VENC_GOP_ATTR_S stGopAttr; // the attribute of gop
VENC_CHN_ATTR_S;
/* the attribute of the Venc*/
typedef struct rkVENC_ATTR_S //编码参数结构体
CODEC_TYPE_E enType; // RW; the type of encodec
IMAGE_TYPE_E imageType; // the type of input image
RK_U32 u32VirWidth; // stride width, same to buffer_width, must greater than
// width, often set vir_width=(width+15)&(~15) //幅长
RK_U32 u32VirHeight; // stride height, same to buffer_height, must greater
// than height, often set vir_height=(height+15)&(~15)
RK_U32 u32Profile; // RW;
// H.264: 66: baseline; 77:MP; 100:HP; //画质
// H.265: default:Main;
// Jpege/MJpege: default:Baseline
RK_BOOL bByFrame; // RW; Range:[0,1];
// get stream mode is slice mode or frame mode
RK_U32 u32PicWidth; // RW; width of a picture to be encoded, in pixel
RK_U32 u32PicHeight; // RW; height of a picture to be encoded, in pixel
VENC_ROTATION_E enRotation;
union
VENC_ATTR_H264_S stAttrH264e; // attributes of H264e
VENC_ATTR_H265_S stAttrH265e; // attributes of H265e
VENC_ATTR_MJPEG_S stAttrMjpege; // attributes of Mjpeg
VENC_ATTR_JPEG_S stAttrJpege; // attributes of jpeg
;
VENC_ATTR_S;
我在c++中用 = 0初始化编译就报错:
VENC_CHN_ATTR_S venc_chn_attr = 0;
报错:
error: invalid conversion from ‘int’ to ‘CODEC_TYPE_E’ aka ‘rk_CODEC_TYPE_E’ [-fpermissive]
VENC_CHN_ATTR_S venc_chn_attr = 0;
用memset函数就能正常编译通过:
memset(&venc_chn_attr, 0, sizeof(VENC_CHN_ATTR_S));
而在c中用 = 0是可以正常编译过的,到了c++里就不行了。。
原因,c++中结构体不能用 = 0来初始化,要用 = 来初始化
以上是关于c++中结构体套结构体用 = {0}初始化编译报错解决办法(用memset或者={})(error: invalid conversion)的主要内容,如果未能解决你的问题,请参考以下文章