开发者社区 问答 正文

关于获取一个union的内部字段

有如下一段代码,为何在外部可以访问ev_ncalls而不需要经过_ev和ev_signal两层封装呢?
event的结构如下

struct event {
    union {
        /* used for io events */
        struct {
            TAILQ_ENTRY(event) ev_io_next;
            struct timeval ev_timeout;
        } ev_io;

        /* used by signal events */
        struct {
            TAILQ_ENTRY(event) ev_signal_next;
            short ev_ncalls;
            /* Allows deletes in callback */
            short *ev_pncalls;
        } ev_signal;
    } _ev;

};
struct event *ev;
int ncall = ev->ev_ncalls;

展开
收起
a123456678 2016-06-02 21:40:53 2020 分享 版权
1 条回答
写回答
取消 提交回答
  • #define ev_ncalls   _ev.ev_signal.ev_ncalls
    #define ev_pncalls  _ev.ev_signal.ev_pncalls
    2019-07-17 19:25:37
    赞同 展开评论
问答地址: