考虑到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是一个结构数组时,这更加不方便).
非常感谢您的帮助.