C99에서 함수 포인터의 구조가 NULL인지 아닌지 확인하는 방법이 있습니까? 내가 현재 가지고있는함수 포인터의 구조가 C99에서 NULL인지 확인하십시오.
은 다음과 유사합니다
typedef struct {
void* (*foo)(int a);
int (*bar)(int a, int b);
} funcs;
void *funcs_dll;
funcs_dll = dlopen("my_funcs_dll.so", RTLD_GLOBAL);
if (funcs_dll == NULL) {
THROW_ERROR;
}
funs.foo = dlsym(funcs_dll, "foo");
funcs.bar = dlsym(funcs_dll, "bar");
if (!funcs.foo || !funcs.bar) {
THROW_ERROR;
}
내가 무엇을 찾고 있어요 것은 내가 각각의 기능을 점검 할 필요가 없습니다 있도록 선택하면 두 번째를 줄일 수있다. 어떤 제안이라도 도움이 될 것입니다.
[이 대답] (http://stackoverflow.com/a/2589876/2703418)을보십시오. – bzeaman
코드가 공식적으로 잘 정의 된 동작은 아니지만 [이 예제는 질문에 100 % 응답합니다] (http://stackoverflow.com/questions/8696653/dynamically-load-a-function-from-a-dll/23763255) # 23763255). – Lundin