1 类型转换:
void*在转换为其他类型时,c语言中可以不用指定类型,如:
temporary_buffer = calloc(1,sizeof(OMX_BUFFERHEADERTYPE));
但是在c++中必须指定,如下:
temporary_buffer = (OMX_BUFFERHEADERTYPE*)calloc(1,sizeof(OMX_BUFFERHEADERTYPE));
否则会报错:无效的类型转换invalid conversion from ‘void’ to ‘OMX_BUFFERHEADERTYPE*’.
calloc分配一个OMX_BUFFERHEADERTYPE空间,并将指向这个空间的指针赋给temporary_buffer 。
还有在类的构建中,对其成员分配空间:
streammad =calloc(1,sizeof(struct mad_stream));//c中是可以的,
但是在c++中报错如下:
error: no match for 'operator=' in '((OpenmaxMp3AO*)this)->OpenmaxMp3AO::streammad= calloc(1u, 13324u)'
更改为:
streammad = (struct mad_stream*)calloc(1,sizeof(struct mad_stream));
2 在 C++的文件中包含C的头文件建议:
extern “C”
{
#include “”
}
3 形参和实参 指针
如果想要在函数中更改传递过来的参数值,还要返回,则调用此函数的时候就要用指针在传递参数,而不能用一个相同类型的形参