Цитата(cf7k @ Aug 30 2009, 01:15)

Код
Со вторым уровнем всё проще. Имя массива является указателем на первый его элемент, потому не надо писать & в
const ppPWInterface const Pathways[] = {&PWMonMode1Arr, &PWMonMode2Arr, &PWMonMode3Arr};
const ppPWInterface final_array[] ={ PWMonMode1Arr1, PWMonMode1Arr2, PWMonMode1Arr3};
warning: initialization discards qualifiers from pointer target typeКстати да

. Правильно писать
Код
ppPWInterface final_array[] ={ PWMonMode1Arr1, PWMonMode1Arr2, PWMonMode1Arr3};
или так
ppPWInterface final_array[] ={ &PWMonMode1Arr1[0], &PWMonMode1Arr2[0], &PWMonMode1Arr3[0]};
Тоже самое касается и указателей на функцию. При инициализации структуры PWInterface надо писать просто имена функций, которые сами по себе являются указателями.
Код
PWInterface PWMonitor1 = {func1, func2,...}
Хотя здесь, насколько я знаю, стандарт допускает и запись вида {&func1, &func2, ...}
Цитата(AHTOXA @ Aug 30 2009, 01:36)

Проверьте на VS, если не трудно.
Никакого мошенства. Я это сначала предварительно в VS проверил, прежде чем здесь писать.
Правда объявлял не массивы, а переменные, но сути это не меняет. Главное варнингов нет

.
CODE
typedef const struct
{
void (*func1)(int);
void (*func2)(int);
} PWInterface;
typedef PWInterface *const pPWInterface;
typedef pPWInterface *const ppPWInterface;
PWInterface PWMonitor1 = {func1, func2};
PWInterface PWMonitor2 = {func2, func1};
pPWInterface PWMonitorPtr1[] = {&PWMonitor1, &PWMonitor2};
ppPWInterface ptrPWMonitorPtr1 = PWMonitorPtr1;