禁用gcc错误参数'<anonymous>'包括指向未知绑定数组的指针

时间:2015-08-07 07:23:34

标签: c++ c gcc-warning

我有以下代码行:

typedef P2FUNC(Std_ReturnType, APP1, GetData) (P2VAR(max_data, AUTOMATIC, APP2)

其中P2FUNC和P2VAR是编译器宏:

#define P2FUNC(rettype, ptrclass, fctname) rettype (*fctname)
#define P2VAR(ptrtype, memclass, ptrclass) ptrtype *

和max_data定义为:

typedef uint8 max_data[];

编译器给出了以下错误:

error: parameter '<anonymous>' includes pointer to array of unknown bound     'max_data {aka unsigned char []}'

此.h文件包含在extern“C”{...声明中的.cpp文件中。

我现在的问题是,是否可以针对此特定情况禁用此错误消息?根据一些特定的标准,这种情况有其自身的原因,关于数组的未确定大小。

我正在使用g ++编译器进行编译。 将会感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

当您将数组传递给函数时,数组会被隐式转换为指针,并且您无法创建指向未知大小数组的指针。

要解决您的问题,请为数组typedef uint8 max_data[10];指定大小或使用指针和动态内存分配。

答案 1 :(得分:1)

尝试将max_data定义为:

typedef uint8* max_data;

指定大小:

typedef uint8 max_data[10];