[英]Struct definition Function of type Static
我在其中一个代码中遇到了以下行:
static DATA_BLOCK_SOX_s data_blockSox = {.header.uniqueId = DATA_BLOCK_ID_SOX};
我想知道这是什么形式的语法以及这里到底发生了什么谢谢
这是一个 C 带有命名字段(指定初始化器)的结构初始化器。
static DATA_BLOCK_SOX_s data_blockSox = {.header.uniqueId = DATA_BLOCK_ID_SOX};
在加载时分配的存储中创建一个DATA_BLOCK_SOX_s
,称为data_blockSox
,作用域为该文件,将所有字段初始化为二进制零,除了header.uniqueId
(其中header
显然是嵌套struct
或union
),它被初始化为DATA_BLOCK_ID_SOX
。
我使用缩进来推断文件 scope。这可能是不正确的。 如果它在 function 中,则应该缩进,但正如我们所知,编译器并不关心。
在不太可能的情况下,您实际上关心 NULL 不是二进制零的系统,有人指出,即使在 NULL 不是二进制零的系统上,指针字段也应该初始化为 NULL。 我只见过没有遵循该规范。
这看起来像 C99。 应该是这样的:
struct Point {int x, y;}; // This would be the stand-in for DATA_BLOCK_SOX_s
typedef struct Point Point;
static Point point = { .y = 10, .x = 5 }; // here the members y and x get their values
在您的情况下,有一个名为header
的嵌套结构。 这作为成员调用uniqueId
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.