関数の関数ポインターtypedefを宣言する代わりに、関数宣言から取得することは可能ですか?
通常、
int foo(int x);
typedef int (*fooFunc)(int);
fooFunc aFunc;
私が欲しいもの:
int foo(int x);
foo* aFunc;
dlsymに使用したい:
foo* aFunc;
aFunc = dlsym(lib, "foo");
aFunc(x);
fooを更新してfooFuncを更新するのを忘れた場合、またはその逆の場合、それは悪いことです。また、私は多くの関数を持っている可能性があり、それらの関数に関連付けられている関数宣言と関数ポインターtypedefの両方を維持するのはより多くの作業になります。
結論:AndreyTの答えは最も移植性がありますが、gccをコーディングする場合は、typeofが優れたソリューションです。