我正在阅读Mach Ports的代码,我想知道一段代码的范例是什么。我的意思是我知道objective-c的结构语法,但我不知道message.header = (mach_msg_header_t) {......};
完整的代码如下。
natural_t data;
mach_port_t port;
struct {
mach_msg_header_t header;
mach_msg_body_t body;
mach_msg_type_descriptor_t type;
} message;
message.header = (mach_msg_header_t) {
.msgh_remote_port = port,
.msgh_local_port = MACH_PORT_NULL,
.msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0),
.msgh_size = sizeof(message)
};
答案 0 :(得分:0)
标头被分配给类型化的mach_msg_header_t伪构造函数,用于初始化某些字段。此处提供了结构细分:http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/(部分粘贴在下方)
typedef struct {
mach_msg_bits_t msgh_bits;
mach_msg_size_t msgh_size;
mach_port_t msgh_remote_port;
mach_port_t msgh_local_port;
mach_port_seqno_t msgh_seqno;
mach_msg_id_t msgh_id;
} mach_msg_header_t;
您引用的位,在结构中分配低级字段并复制到标题中。
message.header = (mach_msg_header_t) {
.msgh_remote_port = port,
.msgh_local_port = MACH_PORT_NULL,
.msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0),
.msgh_size = sizeof(message)
};