mq 사용을 위한 struct에 선언한 변수에 대한 문의
안녕하세요.
mq관련 소스를 보다 궁금한 사항이 있어서 질문 드리게 되었습니다.
mqueue.h를 보면 구조체 정의를 아래와 같이 합니다.
struct mq_attr
{
__syscall_slong_t mq_flags; /* Message queue flags. */
__syscall_slong_t mq_maxmsg; /* Maximum number of messages. */
__syscall_slong_t mq_msgsize; /* Maximum message size. */
__syscall_slong_t mq_curmsgs; /* Number of messages currently queued. */
__syscall_slong_t __pad[4];
};
이전에는 long int가 __syscall_slong_t 로 변경이 됐는데요.
__syscall_slong_t을 찾아 보니 아래와 같이 정의를 합니다.
types.h에서
__STD_TYPE __SYSCALL_SLONG_TYPE __syscall_slong_t;
# define __STD_TYPE typedef
#define __SLONGWORD_TYPE long int
typesizes.h에서
# define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE
결국 아래와 같이 치환이 됩니다.
__syscall_slong_t mq_flags
1)
__STD_TYPE __SYSCALL_SLONG_TYPE mq_flags
2)
typedef __SLONGWORD_TYPE mq_flags
3)
typedef long int mq_flags
근데 마지막 결과를 보면 typedef로 선언을 했는데, 아래와 같이 되어 버립니다.
왜 typedef가 없어져야 할 것 같은데 어디서 없어지는지 모르겠습니다.
struct mq_attr
{
typedef long int mq_flags; /* Message queue flags. */
typedef long int mq_maxmsg; /* Maximum number of messages. */
typedef long int mq_msgsize; /* Maximum message size. */
typedef long int mq_curmsgs; /* Number of messages currently queued. */
typedef long int __pad[4];
};
이해가 안되네요 ㅠ.ㅠ
댓글 달기