考虑到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])};
问题是,在同一项目的其他文件中,我想在全局范围内再次创建其他数组,其元素数量与 arr 中的元素数量相同。但是,如果没有办法“外部”枚举或#define,那么如何在 C99 中实现这一点。当然,可以在头文件中手动#define arr 的元素数量,然后在其他文件中使用它,但这非常不方便,因为通过更改数组 arr 中的元素数量,还必须手动更改#define 的值(当 arr 是一个结构数组时,这更加不方便)。
非常感谢您的帮助。
最佳答案
VLA 对此无济于事:它们需要是自动变量,因此您不能将全局变量设为 VLA。我同意 valdo 的观点,即拥有一个包含数组大小的全局变量(或者一个返回它的函数)是正确的方法。
关于c - 如何在 C99 中声明另一个文件中定义的全局数组大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376809/