Dec 22 2006
[C/C++] char *(*(**foo [][8])())[]; 를 해석할 줄 아는가?
가끔 컴퓨터학원 강사분들이나 교수님들께서 쉬어가는 식으로 책에서는 찾아보기 힘든 난해한 퀴즈를 제시한다.
본인의 경우는 컴퓨터학원에서 자바를 배울 때 클래스 내 static 블럭, static 함수, 기타 등등에 print문을 쓰고 실행 순서를 말해보자는 퀴즈를 풀었는데, 일반적인 프로그래밍을 한다면 쉽게 접하기 어려운 문제여서 꽤 감명을 받은 적이 있다.
C의 경우에는 보통 배열과 포인터, 함수 포인터를 섞어서 퀴즈를 제시하는데, 입문서만 보면서 진행한 사람이라면 풀기 상당히 힘든 문제이다. 물론 실무에서 많이 볼 일은 없지만, 이렇게 쓰는 게 오류는 아니기 때문에 알아두면 나쁠 것은 없다.(리눅스 커널에서 이런 식으로 복잡하게 엮여 있는 경우를 찾아볼 수 있다고 들었으니 쓸모도 나름대로 있다.)
이를 푸는 방법을 제시해 주는 페이지가 있어 링크를 통해 소개한다.
http://www.unixwiz.net/techtips/reading-cdecl.html
제목을 풀어내는 과정은 A hairy example에 있다.
