小编dav*_*hak的帖子

如何在C99中声明在另一个文件中定义的全局数组?

考虑到VLA(可变长度数组),我想问一下您对以下问题的看法:如果在一个文件中在全局范围内定义了一个数组:

int arr[] = {1, 2, 3};

// in the same file it is no problem to obtain the number of elements in arr by
#define arr_num sizeof(arr)/sizeof(arr[0])
// or
enum {arr_num = sizeof(arr)/sizeof(arr[0])};
Run Code Online (Sandbox Code Playgroud)

问题是,在同一个项目的其他文件中,我想在全局范围内再次创建其他数组,其元素数量与arr相同.但是,如果没有办法'extern'枚举或#define,怎么能在C99中实现这一点.当然,可以在头文件中手动#define arr元素的数量,然后在其他文件中使用它,但这非常不方便,因为通过更改数组中的元素数量,一个人也必须手动更改这个#define的值(当arr是一个结构数组时,这更加不方便).

非常感谢您的帮助.

c arrays

5
推荐指数
1
解决办法
875
查看次数

标签 统计

arrays ×1

c ×1