сделайте в том же файле, где он определен, еще и константу, int arr_size = ARRAY_SIZE(array); и ее тоже как extern потом берите. (про кейл не знаю, это методом тыка, сработает или нет, возможно, это расширение gnu, не уверен, что стандарт) По крайней мере в линуксе такое налево и направо практикуется:
Код
static struct v4l2_input tvp5146_inputs[] = {
{
.index = 0,
.name = "Composite",
.type = V4L2_INPUT_TYPE_CAMERA,
.std = TVP514X_STD_ALL,
},
{
.index = 1,
.name = "S-Video",
.type = V4L2_INPUT_TYPE_CAMERA,
.std = TVP514X_STD_ALL,
},
};
static struct vpfe_subdev_info vpfe_sub_devs[] = {
{
.name = "tvp5146",
.grp_id = 0,
.num_inputs = ARRAY_SIZE(tvp5146_inputs),
главное, в одном файле чтобы это было - и инициализация, и ARRAY_SIZE