C:数组类型对于外部数组具有不完整的元素类型错误

时间:2017-01-06 09:43:14

标签: c arrays

在文件“cerberOS_BSP.h”中,我有以下内容:

.directive('findNgRepeatEnd', function() {
  return function(scope, element, attrs) {
   if (scope.$last){
     window.alert("im the last!");
   }
  };
})

在文件“BSP_unpnp.c”中,我有:

extern char cmp_ids[][];
extern UInt8 periph_list[];

这给periph_list没有错误,但为cmp_ids提供了以下内容:

UInt8 periph_list[AMOUNT_OF_PERIPH] = {0};
char cmp_ids[MAX_CMPS][4] = {0};

不确定如何解决这个问题因为我不完全理解这个问题,有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在......

的情况下
char cmp_ids[][];

...您有两个尺寸为开放(未指定)的尺寸。由于元素的位置由start + index * sizeofelements计算,因此有必要知道元素的大小。

外部数组的元素是内部数组char[]。尺寸未知。

您只能省略最外层尺寸。必须指定所有其他尺寸。

答案 1 :(得分:-1)

必须使用大小声明数组,例如:

extern char cmp_ids[MAX_CMPS][4];
extern UInt8 periph_list[AMOUNT_OF_PERIPH];

因此,在头文件中,您需要添加(或包含)MAX_CMPS和AMOUNT_OF_PERIPH的定义。如果需要在运行时计算大小,则可以改为使用指针:

extern char **cmp_ids;
extern UInt8 *periph_list;