C++ C+中的结构初始化+;
从代码中剪下的代码 ,Sensor.cpp有以下代码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",
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++核心指南。