103페이지에 코드가 하나 나오잖아요
거기에 위에서 4~5번째 줄에
typedef void (*Proc)( void );
라는 줄이 있던데
이문장의 의미를 정확하게 모르겠어요
그리고 Proc이라는 데이터 형은
원래 있는건가요~ 아니면
저자가 새로 정의한 데이터 형인가요~?
[GPG 1 글 1.5] GPG1권의 103페이지에 궁금한 것이 있어서요~
Moderator: 류광
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
C++ 구문 중 가장 애매하다고 할 수 있는 구문인데요... 분해를 하자면
일단 typedef의 대상은 Proc입니다. 그 나머지는 Proc이 어떤 형인지를 정의하는 것이구요. typedef와 Proc을 빼면
void (*)(void);
전체적으로는 하나의 함수 포인터입니다. 처음의 void는 함수의 반환값, 두 번째의 (*)는 이것이 함수 포인터임을 의미하고 그 다음의 (void)는 함수의 매개변수 목록입니다...
즉
void 함수이름(void)
형태의 함수를 가리키는 함수 포인터 형식에 Proc이라는 이름을 붙이는 것이죠..
일반 형식의 경우 형식이 나오고 이름이 나오는 형태인데(typedef unsigned int UINT; 등) 함수 포인터는 좀 다르죠...
이걸 왜
typedef void (*) (void) Proc;
라고 하지 않느냐는 좀 어려운 주제일 것입니다... 어디선가 왜 이렇게 되었는지에 대한 토론을 본 적이 있는데 기억이 안 나네요.
일단 typedef의 대상은 Proc입니다. 그 나머지는 Proc이 어떤 형인지를 정의하는 것이구요. typedef와 Proc을 빼면
void (*)(void);
전체적으로는 하나의 함수 포인터입니다. 처음의 void는 함수의 반환값, 두 번째의 (*)는 이것이 함수 포인터임을 의미하고 그 다음의 (void)는 함수의 매개변수 목록입니다...
즉
void 함수이름(void)
형태의 함수를 가리키는 함수 포인터 형식에 Proc이라는 이름을 붙이는 것이죠..
일반 형식의 경우 형식이 나오고 이름이 나오는 형태인데(typedef unsigned int UINT; 등) 함수 포인터는 좀 다르죠...
이걸 왜
typedef void (*) (void) Proc;
라고 하지 않느냐는 좀 어려운 주제일 것입니다... 어디선가 왜 이렇게 되었는지에 대한 토론을 본 적이 있는데 기억이 안 나네요.