#define문 해석 좀 부탁드립니다.
글쓴이: inviolable / 작성시간: 화, 2012/10/30 - 9:28오후
리눅스 signal함수 정의 : void(*signal(int signo, void(*func)(int)))(int);
이해 되시죠??? signal함수는 int형을 인수로 가지고 void를 리턴하고 2개의 인수(signo, 신호 처리부 함수 포인터)를 갖는 함수 포인터를 리턴하는 함수입니다(void* 을 리턴하는게 아니라 void를 리턴, *는 함수 포인터라는 의미의 선언임 포인터 선언시 int *p = &a; 이렇게 하듯이).
이 함수 포인터 2번째 인수로(void(*func)(int)인수) SIG_IGN상수나 SIG_DFL상수를 넣을 수 있는데 이 상수의 정의가 다음과 같습니다(헤더 파일에 정의)
#define SIG_DFL(void(*)())0
#define SIG_IGN(void(*)())1
이 두 #define문이 이해가 안갑니다.
보통 #define문처럼 #define a b 이런식으로 되어있지도 않고 해서... 설명 좀 부탁드립니다.
Forums:
a가 SIG_DFL 이고 b가 (void(*)())0
a가 SIG_DFL 이고 b가 (void(*)())0 입니다.
(void(*)())0 이 뭐죠???
void형을 리턴하는 인수없는 함수 포인터인건가요?? 근데 이름도 없네요?? 그리고 뒤에 0붙힌건 뭐죠???
상수 0의 앞에다가 이 0의 타입이 "인자는 없고
상수 0의 앞에다가 이 0의 타입이 "인자는 없고 리턴타입은 void인 함수의 포인터" 타입이라고 캐스트해 준 거네요.
좋은 하루 되세요!
아 그렇군요...
캐스팅이라... 답변 감사합니다...^^
댓글 달기