off_t type을 따라가보던 중에...
off_t type의 원형을 찾아가보려고 따라가보던 중에 다음과 같은 구문을 발견했습니다.
그런데 제 위치에서는 처음 보는 것이네요. #define 선언은 한문장 밖에 없는데 어떻게 아래는 그냥 원하는 내용을 써 놓은 것인지...
도대체 무슨 문법을 사용한 것인가요?
------------------------------------------------------------------------
#include /* Defines __*_T_TYPE macros. */
/* We want __extension__ before typedef's that use nonstandard base types
such as `long long' in C89 mode. */
#define __STD_TYPE __extension__ typedef
__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */
__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */
__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */
__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */
__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/
__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */
__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */
__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */
__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */
__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */
__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */
__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */
__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */
__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */
__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
__STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */
__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */
/* Clock ID used in clock and timer functions. */
__STD_TYPE __CLOCKID_T_TYPE __clockid_t;
/* Timer ID returned by `timer_create'. */
__STD_TYPE __TIMER_T_TYPE __timer_t;
/* Type to represent block size. */
__STD_TYPE __BLKSIZE_T_TYPE __blksize_t;
/* Types from the Large File Support interface. */
/* Type to count number of disk blocks. */
__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t;
__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t;
보여주신 내용
보여주신 내용 안에서는 딱 2줄만 필요하고 다른 줄은 보실 필요가 없습니다.
그 두 줄은 아래와 같습니다.
#define __STD_TYPE __extension__ typedef
__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
이 문장은 이렇게 해석이 됩니다.
__extension__ typedef __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
이제 상단에 #include에 적혀있는 파일을 열어서 __OFF_T_TYPE에 대한 정의를 찾으면 됩니다.
또한 어딘가에 typedef __off_t off_t; 와 비슷한 줄이 있을 것입니다.
..
..
댓글 달기