signal 함수 질문이요
글쓴이: I LY@Google / 작성시간: 금, 2021/04/09 - 7:22오전
예제에서 이렇게 선언 되었다고 하는데요
void (*signal(int signo, void (*func)(int)))(int);
-> 시그널 발생시 호출되도록 이전에 등록된 함수 포인터 반환
그럼 반환값은 void *형이고 함수이름은 signal 인자는 int signal와 void (*) (int)형 함수 포인터
까지는 알겠는데요.
void다음에 가로'(' 쳐있는것과 마지막에 int형은 뭔가요??
Forums:
반환값의 타입이 void * 이 아니고 함수포인터인
반환값의 타입이 void * 이 아니고 함수포인터인 void (*)(int) 입니다.
새 시그널 핸들러를 등록하면서 이전의 시그널 핸들러를 반환하는 함수죠.
아래의 빨간색 표시된 부분이 반환값 타입을 지정하는 것이고요.
void (*signal(int signo, void (*func)(int)))(int);
과거에도 비슷한 질문이 있었네요.
https://kldp.org/node/163935
이해는 했는데요...
void (*signal(int signo, void (*func)(int)))(int);
이렇게 선언해도 된다고 하니깐 딱히 할 말은 없는데요
그래도
void (*)(int) signal(int signo, void (*func)(int));
라고 하는게 좀더 함수 선언에 일정하지안을까 하는생각이 드는데
별로 차이도 안나기도 하고 ㅎㅎ...
비슷한 질문에 대한 답글중에 https://kldp
비슷한 질문에 대한 답글중에 https://kldp.org/comment/638478#comment-638478 의 내용입니다.
typedef를 이용하시면 원하시는 형태의 읽기 쉬운 코드가 나오죠.
댓글 달기