一 错误
1、error: return type is an incomplete type
翻译过来是:返回类型是不完整的类型。
我这里出现的原因是,在写函数接口的时候,返回的是结构体指针,但是在定义函数返回类型的时候,只写了对应的结构体。
错误代码如下:
struct SwrContext swr_config(struct SwrContext *s, AVFormatContext *ic, S32 stream_index)
{
if(NULL == s)
{
s = swr_alloc();
}
s = swr_alloc_set_opts(s, // we're allocating a new context
AV_CH_LAYOUT_STEREO, // out_ch_layout
AV_SAMPLE_FMT_S32, // out_sample_fmt
SWR_SAMPLE_RATE, // out_sample_rate
ic->streams[stream_index]->codec->channel_layout, // in_ch_layout
ic->streams[stream_index]->codec->sample_fmt, // in_sample_fmt
ic->streams[stream_index]->codec->sample_rate, // in_sample_rate
0, // log_offset
NULL); // log_ctx
swr_init(s);
return s;
}
错误提示为:
decoder1.c:52:19: error: return type is an incomplete type struct SwrContext swr_config(struct SwrContext *s, AVFormatContext *ic, S32 stream_index) ^decoder1.c: In function ‘swr_config’:decoder1.c:69:9: warning: ‘return’ with a value, in function returning void return s;
更改后的代码为:
struct SwrContext *swr_config(struct SwrContext *s, AVFormatContext *ic, S32 stream_index){ if(NULL == s) { s = swr_alloc(); } s = swr_alloc_set_opts(s, // we're allocating a new context AV_CH_LAYOUT_STEREO, // out_ch_layout AV_SAMPLE_FMT_S32, // out_sample_fmt SWR_SAMPLE_RATE, // out_sample_rate ic->streams[stream_index]->codec->channel_layout, // in_ch_layout ic->streams[stream_index]->codec->sample_fmt, // in_sample_fmt ic->streams[stream_index]->codec->sample_rate, // in_sample_rate 0, // log_offset NULL); // log_ctx swr_init(s); return s;}
二 警告
三 编码规范
NOTE:这里的编码规范是指,如果不按照,有时就回出现错误
1 结构体指针在声明的时候,必须赋为NULL。
原因:如果不赋为NULL,不同的编译器在处理结构体声明的时候,有的会自动赋为空,有的会赋一个值(影响申请内存的过程)。