任何人都可以解释一下,这个结构初始化是如何工作的?

时间:2014-08-22 17:02:32

标签: c struct coding-style initialization

struct audio_policy_service_ops {

audio_io_handle_t (*open_duplicate_output)(void *service,audio_io_handle_t output1,  
     int (*close_output)(void *service, audio_io_handle_t output);audio_io_handle_t output2);
     int (*suspend_output)(void *service, audio_io_handle_t output);
     int (*restore_output)(void *service, audio_io_handle_t output);
};

现在他们正在被初始化,如下所示:

struct audio_policy_service_ops aps_ops = {
    open_duplicate_output : aps_open_dup_output,
    close_output          : aps_close_output,
    suspend_output        : aps_suspend_output,
    restore_output        : aps_restore_output,
};

2 个答案:

答案 0 :(得分:7)

这是结构的非标准GCC特定初始化语法。它通俗地称为“旧式GNU struct init语法”。它的标准等价物就像

struct Foo bar = { .name1 = value1, .name2 = value2 };

您可以详细了解in the GCC documentation

答案 1 :(得分:1)

这是GCC主义。初始化结构时,可以在初始化值前加上结构字段的名称。这允许初始化程序遵循随机顺序,并使得更清楚给定值所属的字段。