Prośba o wyjaśnienie dziwnego wskaźnika

0

Witam.

Mam dwa pytania, mianowicie czy linijka oznaczona 1 mówi nam że g_pfnVectors będzie wskaźnikiem na tą tablice ?
Oraz co znaczy linijka oznaczana 2 ? Nie potrafię zinterpretować tego: (void ()(void))*.

unsigned long pulStack[STACK_SIZE];
...
void (* const g_pfnVectors[])(void) = // 1
{

  (void (*)(void))((unsigned long)pulStack + sizeof(pulStack)),  // 2  
   ...
}
 

Dziękuje.

2

:-D

Otóż to:

void (* const g_pfnVectors[])(void)

To jest tablica stałych wskaźników do funkcji przyjmującej void (czyli funkcji bez argumentów) i zwracjącej void (czyli nie zwracającej niczego). W czytaniu takich potworów pomaga cdecl:

declare g_pfnVectors as array of const pointer to function (void) returning void

Potem to już jest wypełnienie tej tablicy adresami. To (void (*)(void)) to rzutowanie adresu z tej tablicy pulStack na wskaźnik do funkcji.

0

no tak rzeczywiście :) teraz widzę w tym funkcje void ()(void)* bez parometrową i bez wyniku.

Dziękuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1