Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的结构初始化+;_C++_Data Structures - Fatal编程技术网

C++ C+中的结构初始化+;

C++ C+中的结构初始化+;,c++,data-structures,C++,Data Structures,从代码中剪下的代码 ,Sensor.cpp有以下代码 struct sensors_module_t HAL_MODULE_INFO_SYM = { common: { tag: HARDWARE_MODULE_TAG, version_major: 1, version_minor: 0, id: SENSORS_HARDWARE_MODULE_ID, name: "LGE Sensor module",

从代码中剪下的代码 ,Sensor.cpp有以下代码

struct sensors_module_t HAL_MODULE_INFO_SYM = {
    common: {
        tag: HARDWARE_MODULE_TAG,
        version_major: 1,
        version_minor: 0,
        id: SENSORS_HARDWARE_MODULE_ID,
        name: "LGE Sensor module",
        author: "LG Electronics Inc.",
        methods: &sensors_module_methods,
        dso: NULL,
        reserved: {0}
    },
    get_sensors_list: sensors__get_sensors_list,
};
现在我不明白这里的
是什么意思?这是某种初始化还是其他什么


我对C++的了解不多。因此,如果有任何链接或资源来理解这些事情,我们将不胜感激。这是一个编译器特定的扩展,一种指定初始值设定项的过时形式。gcc的实现是有文档记录的

在C中,您可能有:

struct point { int x, y; };
struct point p = { 10, 20 };
使用ISO C99中引入的指定初始值设定项功能,您可以将其编写为:

struct point { int x, y; };
struct point p = { .x = 10, .y = 20 };
但在C99之前,gcc引入了一个具有不同语法的类似功能:

struct point { int x, y; };
struct point p = { x: 10, y: 20 };

GCC,或者更确切地说,G++,在C++模式中也支持这个,但是C++没有采用C99风格的指定初始化器。 gcc手册指出,自1993年发布的gcc 2.5以来,该功能的

版本已经过时,因此绝对不应在新代码中使用它

请注意,如果初始值恰好是一个小整数常量,如您的示例所示:

    version_major: 1,
    version_minor: 0,
它很容易与位字段的语法混淆

对于C,只要编译器支持C99或更高版本,那么
.name=value
表单就有效且可移植。对于C++,它不是可移植的,但是只要使用C++或类似CLAN的编译器,就可以使用C99语法。还有一个常见问题,你应该明确地阅读C++核心指南。