您好,匿名用户
随意问技术百科期待您的加入

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

0 投票

有如下一段代码,为何在外部可以访问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;

用户头像 提问 2012年 12月1日 @ Irelia 上等兵 (292 威望)
分享到:

1个回答

0 投票
 
最佳答案

看来要自问自答了,看代码不仔细。。。
在event-internal.h里面有

#define ev_ncalls   _ev.ev_signal.ev_ncalls
#define ev_pncalls  _ev.ev_signal.ev_pncalls
用户头像 回复 2012年 12月1日 @ Teemo 上等兵 (318 威望)
选中 2012年 12月1日 @Irelia
提一个问题:

相关问题

0 投票
1 回复 32 阅读
0 投票
1 回复 32 阅读
用户头像 提问 2012年 12月1日 @ Kassadin 上等兵 (255 威望)
0 投票
1 回复 43 阅读
用户头像 提问 2012年 12月1日 @ Shyvana 上等兵 (214 威望)
0 投票
1 回复 49 阅读
0 投票
1 回复 26 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...