Тип функции, которую вы пытаетесь объявить в качестве цели для типа элемента вашего массива, имеет в качестве третьего параметра двумерный массив переменной длины const int
.Однако в объявлении массива вы пытаетесь объявить его как один const int
.Они несовместимы.
Самый простой способ объявить это будет выглядеть так:
void(*p[1])(int, int, const int[*][*]) = { min };
или примерно так:
void(*p[1])(int, int, const int[][*]) = { min };
.Два эквивалентны.*
в измерении массива указывает VLA неизвестного размера - неизвестно, потому что это зависит от других аргументов.Первое измерение (только) параметра массива всегда можно опустить, и часто я предпочитаю его опускать, но в этом случае я предпочитаю первое объявление, потому что, хотя компилятор игнорирует первое измерение массива, оно понятно для читателей-людей.что это тоже переменное измерение.