Podczas przeglądania kodu wygenerowanego przez Real Time Workshop (z Pakietu Matlab/Simulink) natrafiłem na takie cudo:
typedef int_T (*_ResolveVarFcn)( const SimStruct *S, const char *, mxArray **);
nie za bardzo rozumiem o co chodzi w tym fragmencie kodu. Moglibyście wytłumaczyć mi co dokładnie robi ta linijka kodu?
witos
(Witos)
#2
definiuje typ _ResolveVarFcn jako wskaźnik na funkcję zwracającą typ int_T i przyjmującą parametry: const SimStruct *, const char *, mxArray **
czyli potem można robic cos takiego:
typedef int_T (*_ResolveVarFcn)( const SimStruct *S, const char *, mxArray **);
int_T moja_funkcja( const SimStruct *S, const char *c, mxArray **a)
{
//cialo funkcji
}
// to w main albo innej funckji
_ResolveVarFcn fptr = &moja_funkcja;
int_T result = fptr( /* tu argumenty */);
Czy potrzebny jest ten nawias?
(*_ResolveVarFcn)
Chodzi mi o sam nawias, czy nie można zastąpić tego po prostu tym
*_ResolveVarFcn
faust1002
(Juszczyk Pawel)
#4
Tak, to wskaźnik na funkcję, a nie na zmienną
Aha, czyli zawsze wskaźnik na funkcję bierze się w nawias? Nie wiedziałem Wielkie dzięki
faust1002
(Juszczyk Pawel)
#6
dokładnie ujmując składnia wskaźników do funkcji / metod
typ_zwracanej_wartości (*nazwa_wskaznika)(lista typów argumentów fukcji)
Tak jak słusznie zauważyłeś wskaźniki do funkcji umieszcza się w nawiasie, ale musisz jeszcze dodać typ zwracaj wartości i listę typów argumentów.