함수포인터 typedef 어렵네요
글쓴이: corone / 작성시간: 수, 2010/12/15 - 3:07오전
proc 파일시스템과 관련된 struct proc_dir_entry 구조체를 보다가,
typedef int (read_proc_t)(char *page, char **start, off_t off, int count, int *eof, void *data); typedef int (write_proc_t)(struct file *file, const char __user *buffer, unsigned long count, void *data); struct proc_dir_entry { ... read_proc_t *read_proc; write_proc_t *write_proc; ... };
typedef 부분이 이해가 잘 안가서 찾아봤는데,
typedef int (*func)(int,int); func pfunc;
위와 같이 선언하면
int (*pfunc)(int,int);
이와 같은 효과가 있다고 하네요
그냥 그러려니 이해하고 외우고 넘어갈려다가
궁금해졌습니다
왜 typedef를 사용하면 저렇게 선언한 효과가 되는 것인가요?
그냥 컴파일러와의 약속인가요?
아니면 논리적으로 설명이 가능한 건가요?
일반적으로
typedef unsigned int u32;
typedef struct str { ... } STR;
이와 같은 선언만 흔히 봐서 이해가 잘 안되네요
Forums:
typedef를 빼면 변수 선언 붙이면 타입
typedef를 빼면 변수 선언 붙이면 타입 선언이라고 이해하시면 편합니다.
unsigned int u32; // u32는 unsigned int 타입의 변수
typedef unsigned int u32; // u32는 unsigned int 타입
int (*func)(int, int); // func는 (int, int)를 받고 int를 리턴하는 함수에 대한 포인터 타입의 변수
typedef int (*func)(int, int); // func는 (int, int)를 받고 int를 리턴하는 함수에 대한 포인터 타입
댓글 달기