http://gall.dcinside.com/board/view/?id=programming&no=481291&page=4
예전에 답글달아놓은것중에
void (*signal(int signo, void (*func)(int)))(int);
함수의 해석이있는데
좀의아한게있음. 일단 signal이란 키워드가 주가되서 해석하는건데
이게 막말로 signal 입장에서만보면
*signal(parameter)
이런식으로 되있지않음? 이게 내가알기로 연산자 우선순위가 후치연산자 부터 먹어들어가서 이게 함수포인터가아니라 함수인거로 알고있는데 틀림?
그래서 void (int) 함수 포인터도
void *a(int)가 아닌 void (*a)(int)로 써주는이유가 *a(int)면 이게void*형을 리턴하고 parameter로 int형을 가지는 함수로 되버리는 걸로 알고있음!
뭐가맞는거임?
물론 이걸 함수로만보기도 잘못된게 함수자체면 void signal(파라미터)로 끝나야지 void (* siganl ()) (int) 로 붙진않는데 내가알던거랑 좀많이달라서..
있으신가요->있으시나요
여기서의 있다는 동사이므로 있으시나요가 맞음
추가로 되서->돼서 되있->돼있
되버리는->돼버리는
맞네. 내 눈이 병신인듯. 닫는 괄호가 signal 오른쪽에 있는 줄 알고 답변했음. 결론부터 말하면 저거 함수 맞음. void xxx(int); 꼴을 가리킬 수 있는 함수 포인터 void (*)(int)를 리턴하는 함수 signal을 선언한 거. signal의 인자는 int signo와 void xxx(int); 꼴의 함수에 대한 포인터 변수 func임. signal 함수 자체가 signal(시그널 번호, 새 signal 처리 함수 포인터)로 호출하면 반환 값으로 이전 signal 처리 함수 포인터를 리턴하니깐.
아 ㅋㅋㅋ 그렇네요 만약 void *( *signal(int signo, void (*func)(int)) ) (int); 이렇게되면 반환되는함수 포인터형 타입이 void*를 반환하고(int)를 인자로받는 함수포인터를 리턴하고 그 인자를 int 와 void (int)함수를 가르키는 함수포인터를 인자로받는다 그거아님?
아근데 내가 코딩하다 우연히 여기 몇몇사람 댓글읽었는데 와 다들 실력이 장난이아닌듯. 나도열심히공부해야겠네..
맞음. 정확함.
ㅇㅇ// ㅇㅋㅇㅋ 앞으로신경쓸게요
캬 그렇군! 아 이게 커널단소스에 이딴소스가 그렇게많아서 다 typedef로 때려박는다는데 나도 내공이부족해서 그런소스를 본적이없는게 좀아쉽네요
프로그래밍 세계에선 초보와 고수는 종이 한 장 차이야. 고수는 그저 초보보다 팁을 몇 개 더 알고 있어서 잘 짜는 것일 뿐... 노력하면 못 따라갈 사람은 없음. 진짜 천재는 코세님 같은 사람이야. 내 나이 때 하루에 코드를 5만줄씩 짰다는데 괴물이지 괴물.
ㅇㅇ// 계신가요 아님?
하루에 코드5만줄이가능함? 왠만한 소형 앱소스도 그정도될탠데 거기다 설계 + 최적화 + 디버깅등등등 하면서 하루에 그만한 분량을뽑는게 말이되나요?;;;
그러니깐... 하루에 5천줄 짜도 굉장히 많이 짠건데 5만줄은 나도 상상이 안 가...
내가 학생이여서그런지 아직 여러모로 테스트모듈짜보고 돌리고 수정하고 하면 실제로 하루에 나오는코드 100줄~200줄도 많은데;;
ㄹㄹ// 계시다도 역시 동사라 계시나요가 맞다
nyangduck// 이여서->이어서
nyangduck// 왠만->웬만