如何在 C 头文件中正确编写 extern 数组(和双精度数组)的声明?
假设我想在程序中共享一个全局数据数组,例如:
int lookup_indexes[] = { -1, 1, 1, -1, 2, 1, 1, -2, 2, 2, -1, 1, 1, 2 };
C 头文件中该数组的正确 extern
声明是什么?
另外,像这样的数组怎么样:
int double_indexes[][5] = { { -1, 1, 1, -1, 1 }, { 2, -2, 2, 1, -1 } };
在我的头文件中我尝试了这个:
extern int lookup_indexes[];
extern int double_indexes[][5];
但这会导致编译器错误:
water.h:5: error: array type has incomplete element type
我无法弄清楚。
谢谢,博达·西多。
Suppose I want to share a global array of data across my program, for example:
int lookup_indexes[] = { -1, 1, 1, -1, 2, 1, 1, -2, 2, 2, -1, 1, 1, 2 };
What is the correct extern
declaration for this array in the C header file?
Also what about an array like this:
int double_indexes[][5] = { { -1, 1, 1, -1, 1 }, { 2, -2, 2, 1, -1 } };
In my header file I tried this:
extern int lookup_indexes[];
extern int double_indexes[][5];
But this results in compiler errors:
water.h:5: error: array type has incomplete element type
I can't figure it out.
Thanks, Boda Cydo.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
此链接讨论了用作 extern 的数组和大小的问题以及如何管理它们。
为大小定义一个清单常量,以便可以在定义中一致地使用它外部声明
This link discusses the problems with arrays and sizes used as extern and how to manage them.
define a manifest constant for the size so that it can be used consistently in the definition and the extern declaration
您发布的代码对我来说看起来不错,并且可以在我的机器上编译(
gcc -std=c99 -pedantic
和gcc -std=c90 -pedantic
)。您是否复制粘贴了这些行,或者您是否在实际标题中输入了拼写错误?可能导致错误的示例拼写错误(纯粹猜测):
The code you posted looks fine to me and compiles (
gcc -std=c99 -pedantic
andgcc -std=c90 -pedantic
) on my machine. Have you copy-pasted these lines or could you have made a typo in your real header?Example typos that could cause your error (pure guesswork):