typedef extern c function pointer