C언어 공부하던중에.
char (*(*x[3])())[5]
char (*(*x())[])()
이 두 선언의 이해가 힘들어서요 :D
어떻게 접근해야하는거죠?
http://gd.tuwien.ac.at/linuxcommand.org/man_pages/cdecl1.html
TCPL찾아보면 자세히 나와 있습니다. 저 선언을 영어로 해석해 주는 프로그램도 recursive descending paser의 원리로 구현합니다.
일단 간단한 설명으로는
char (*(*x[3])())[5] 이건 x는 함수 포인터의 배열이고 포인터가 가리키는 함수는 char형 배열[5]를 리턴합니다.
char (*(*x())[])() 이건 x는 char형 함수포인터의 배열을 가리키는 포인터를 리턴하는 함수입니다.
사실 근데 이런것을 써본적은 거의 없는듯. 필요한 상황이라도 적절한 typedef를 통해 알아보기 쉽게 하는게 좋을듯 하네요
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Windows용 cdecl 없나요?
http://gd.tuwien.ac.at/linuxcommand.org/man_pages/cdecl1.html
그건..
TCPL찾아보면 자세히 나와 있습니다. 저 선언을 영어로 해석해 주는 프로그램도 recursive descending paser의 원리로 구현합니다.
일단 간단한 설명으로는
char (*(*x[3])())[5]
이건 x는 함수 포인터의 배열이고 포인터가 가리키는 함수는 char형 배열[5]를 리턴합니다.
char (*(*x())[])()
이건 x는 char형 함수포인터의 배열을 가리키는 포인터를 리턴하는 함수입니다.
사실 근데 이런것을 써본적은 거의 없는듯. 필요한 상황이라도 적절한 typedef를 통해 알아보기 쉽게 하는게 좋을듯 하네요
댓글 달기