如何初始化在结构中声明的数组?

Posted

技术标签:

【中文标题】如何初始化在结构中声明的数组?【英文标题】:How to initialize array that declared inside struct? 【发布时间】:2021-12-31 19:47:42 【问题描述】:

我正在开发 C 程序来读取门禁状态。我创建了一个结构,其中声明了两个数组。我想在定义该结构时初始化数组。 例如,

.h 文件中的结构声明:

typedef volatile struct


    uint8_t __near const * const people_in_input_ports[8];

    uint8_t __near const * const people_out_input_ports[8];

GATE_ACCESS_CTRL_BLOCK;

.c 文件中的结构体定义:

GATE_ACCESS_CTRL_BLOCK g_gate_acc_parameters    =  
    .people_in_input_ports  = &P12, &P4, &P4, &P4, &P6, &P6, &P6, &P6,                                                
    .people_out_input_ports = &P14, &P14, &P2, &P14, &P14, &P5, &P5, &P1
;

这里P12P4P6P5P2P14是对应端口的sfr地址。

我收到以下错误。

E0520029:Expected an expression
E0520029:Expected an expression

如何使用数组名来初始化结构内声明的数组?

【问题讨论】:

请提供minimal reproducible example。 【参考方案1】:

在我的项目中,选择了 C90 标准,它不支持编译器设置中的那种初始化。将其更改为 C99 标准即可。

【讨论】:

或者直接删除指定的初始化器。

以上是关于如何初始化在结构中声明的数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Java中声明和初始化数组?

在 C++ 中的类构造函数中初始化结构数组

如何在 Java 中声明和初始化数组?

在一个操作中声明后在结构中填充数组的最简单方法[重复]

如何对结构体变量进行初始化?

如何在 C++ 中声明后初始化 n 大小的数组