如何在C的头文件中正确编写extern数组(和双数组)的声明?

bod*_*ydo 8 c arrays header declaration extern

假设我想在我的程序中共享全局数据数组,例如:

int lookup_indexes[] = { -1, 1, 1, -1, 2, 1, 1, -2, 2, 2, -1, 1, 1, 2 };
Run Code Online (Sandbox Code Playgroud)

externC头文件中此数组的正确声明是什么?

那么这样的数组怎么样:

int double_indexes[][5] = { { -1, 1, 1, -1, 1 }, { 2, -2, 2, 1, -1 } };
Run Code Online (Sandbox Code Playgroud)

在我的头文件中我尝试了这个:

extern int lookup_indexes[];
extern int double_indexes[][5];
Run Code Online (Sandbox Code Playgroud)

但这会导致编译器错误:

water.h:5: error: array type has incomplete element type
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚.

谢谢,Boda Cydo.

Pra*_*n S 6

链接讨论了用作extern的数组和大小的问题以及如何管理它们.

  1. 声明一个伴随变量,包含数组的大小,在定义数组的同一源文件中定义和初始化(使用sizeof)
  2. 为大小定义清单常量,以便可以在定义和外部声明中一致地使用它

  3. 在数组的最后一个元素中使用一些sentinel值(通常为0,-1或NULL),以便代码可以在没有明确大小指示的情况下确定结束