Jee*_*tel 12 c++ data-structures
代码从Android AOSP代码中解密,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,
};
Run Code Online (Sandbox Code Playgroud)
现在我不明白这里:意味着什么?是某种初始化还是其他什么?
我对C++知之甚少.所以如果有任何链接或资源来理解这件事情将不胜感激.谷歌搜索我找不到多少.
Kei*_*son 12
它是特定于编译器的扩展,是指定初始化程序的过时形式.这里记录了 gcc实现.
在C中,您可能有:
struct point { int x, y; };
struct point p = { 10, 20 };
Run Code Online (Sandbox Code Playgroud)
使用ISO C99中引入的指定初始化程序功能,您可以将其写为:
struct point { int x, y; };
struct point p = { .x = 10, .y = 20 };
Run Code Online (Sandbox Code Playgroud)
但在C99之前,gcc引入了一个具有不同语法的类似功能:
struct point { int x, y; };
struct point p = { x: 10, y: 20 };
Run Code Online (Sandbox Code Playgroud)
gcc,或者更确切地说是g ++,也支持C++模式,但C++没有采用C99风格的指定初始化器.
gcc手册说,:自从1993年发布的gcc 2.5以来,这个功能的版本已经过时了,所以它绝对不应该用在新代码中.
请注意,如果初始值恰好是一个小的整数常量,如下例所示:
version_major: 1,
version_minor: 0,
Run Code Online (Sandbox Code Playgroud)
它容易与位字段的语法混淆.
对于C .name = value,只要您的编译器支持C99或更高版本,表单就是有效且可移植的.对于C++,它不可移植,但只要您使用g ++或类似于它的clang编译器,就可以使用C99语法.
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |