Linux에서 제공되는 signal 함수(시그널 등록 함수라고 표현하기도 함)를 보면 특이한 형태를 보인다. 함수 포인터는 알고 있었지만, '함수 포인터를 리턴하는 함수'는 처음 보는 것 같아서 따로 정리하려고 한다.
복잡한 것은 아니고 정해진 syntax가 있기 때문에 규칙만 알면 어렵지 않다. 함수 포인터를 리턴하는 함수를 선언하려면 아래와 같은 규칙을 따르면 된다.
함수포인터반환값자료형 (*함수이름(매개변수자료형 매개변수))(함수포인터매개변수자료형1, 함수포인터매개변수자료형2)
{
}
signal.h에 포함된 signal함수를 보자
void (*signal( int sig, void (*handler) (int))) (int);
그렇다면 위의 함수는 아래와 같은 의미이다.
- 함수 이름은 signal이며 리턴 타입은 함수 포인터
- 매개변수는 정수(int signo)와 함수 포인터( void (*handler)(int) )
- 함수 포인터가 가리키는 함수의 매개변수는 int이며, 리턴 타입은 void
Reference
https://dojang.io/mod/page/view.php?id=600
'공부 > C || C++' 카테고리의 다른 글
C++ return new(*this); 는 복사 생성자를 호출한다 (0) | 2021.08.17 |
---|---|
C/C++ 파일 입출력 (0) | 2021.08.14 |
C 입력 버퍼 비우기 (0) | 2021.07.30 |
C++ iterator를 reverse_iterator로 변환시 같은 element를 가리키지 않는 이유 (0) | 2021.07.30 |
C++ 11 universal reference, std::forward (0) | 2021.07.25 |