objective-c - Objective-C 或 C 语言中这段代码的规则语法是什么?

标签 objective-c c

我正在读取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/

相关文章:

c - C语言的ATM机

ios - 切换隐私设置将终止该应用程序

c - 需要使用 json 的帮助

c - A、B之间的距离

ios - iOS8 中的休息套件失败

c - C语言中如何比较两个指针的值

c - 当在随机位置键入字符时,使用文本编辑器打开的文件中的文本如何向右移动?

c++ - 带有局部变量声明的 dispatch_apply 不能在 C++ 方法实现中编译

ios - 在 IOS 中使用 SAOP API 获取 Magento 的 session ID

ios - SpriteKit bodyWithTexture 未对齐