繁体   English   中英

Static 类型的结构定义 Function

[英]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显然是嵌套structunion ),它被初始化为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM