Pytałem wcześniej o skrócenie kodu... skorzystałem ze sposobu podanego przez @n0name_l, jednak mam z nim pewien problem. Chcę napisać wskaźniki do funkcji zadeklarowanych gdzieś indziej (funkcje zewnętrznej biblioteki), ale dołączam niezbędny nagłówek do swojego pliku, jednak mam pewien warning z którym nie wiem jak sobie poradzić. Oto kod:
#include <stdio.h>
#include <stdlib.h>
#include "libs/outlib.h"
typedef int (*VFUNCV)(int, double);
void call(int which, VFUNCV* fun, int a, double b)
{
fun[which](a, b);
}
int main()
{
VFUNCV fun[2] = {outlibfun2, outlibfun2};
call(0, fun, 3, 4.5);
return 0;
}
Ścieżki, argumenty, typedef i opcje kompilacji są w porządku - sprawdzałem i na 100% jest ok. Problem jest tylko, jeśli korzystam z funkcji zewnętrznej biblioteki. Jakieś pomysły?
Oto warning:
funargs.c: In function ‘main’:
funargs.c:14:5: warning: initialization from incompatible pointer type [enabled by default]
funargs.c:14:5: warning: (near initialization for ‘fun[0]’) [enabled by default]
funargs.c:14:5: warning: initialization from incompatible pointer type [enabled by default]
funargs.c:14:5: warning: (near initialization for ‘fun[1]’) [enabled by default]
Linia 14 to linia:
VFUNCV fun[2] = {outlibfun1, outlibfun2};