我正在读取Mach Ports的代码,我想知道一段代码的范式是什么。我的意思是我知道objective-c的struct的语法,但我不知道 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)
};
最佳答案
header 被分配给类型转换的 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;
您引用的位会分配结构中的低级字段并将其复制到 header 中。
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)
};
关于objective-c - Objective-C 或 C 语言中这段代码的规则语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32989546/