728x90
1. 직접 호출
void myFunction() {
// 함수의 내용
}
int main() {
myFunction(); // 함수 호출
return 0;
}
2. 함수 포인터를 사용한 호출
void myFunction() {
// 함수의 내용
}
int main() {
void (*funcPtr)() = myFunction; // 함수 포인터 선언 및 초기화
funcPtr(); // 함수 포인터를 통한 호출
return 0;
}
3. 배열에 함수 포인터 저장
void functionA() { /*...*/ }
void functionB() { /*...*/ }
int main() {
void (*funcArray[2])() = {functionA, functionB}; // 함수 포인터 배열
funcArray[0](); // functionA 호출
funcArray[1](); // functionB 호출
return 0;
}
4. 콜백 함수
void myCallback(void (*callbackFunc)()) {
// 콜백 함수 호출
callbackFunc();
}
void myFunction() {
// 함수 내용
}
int main() {
myCallback(myFunction); // 콜백으로 함수 전달 및 실행
return 0;
}
5. 구조체와 함수 포인터
typedef struct {
void (*function)();
} MyStruct;
void myFunction() {
// 함수 내용
}
int main() {
MyStruct s;
s.function = myFunction; // 구조체 내 함수 포인터 초기화
s.function(); // 구조체를 통한 함수 호출
return 0;
}
6. 라이브러리 함수와 함수 포인터
#include <dlfcn.h>
int main() {
void *handle = dlopen("libmylibrary.so", RTLD_LAZY); // 동적 라이브러리 열기
void (*myFunction)() = (void (*)())dlsym(handle, "myFunction"); // 함수 포인터 얻기
myFunction(); // 함수 호출
dlclose(handle); // 라이브러리 닫기
return 0;
}
728x90
'C, C++' 카테고리의 다른 글
메타 프로그래밍 (0) | 2024.02.15 |
---|---|
'함수 이름'을 인자로 받아 해당 함수를 실행하는 방법들 (0) | 2023.11.20 |