gpt4 book ai didi

c - 定义结构数组的值

转载 作者:太空宇宙 更新时间:2023-11-04 02:57:45 25 4
gpt4 key购买 nike

当我通过以下方式声明 typedef 时:

typedef struct
{
uint8 LastState;
uint8 CurrentState;
uint8 NextState;
uint8 TaskEnabled;
uint8 Counter;
uint8 Status;
}SM_tstTaskStateStructure;

我尝试通过以下方式定义要创建的数组的内容:

#define xInitDataTable  \
{IDLE,IDLE,IDLE,YES,TIMED7SEG,IDLE}, \
{IDLE,IDLE,IDLE,YES,TIMELED1,IDLE}, \
{IDLE,IDLE,IDLE,YES,TIMELED2,IDLE}, \
{IDLE,IDLE,IDLE,YES,TIMELED3,IDLE}, \
{IDLE,IDLE,IDLE,YES,TIMEBTN,IDLE}, \
{IDLE,IDLE,IDLE,YES,BASETIME,IDLE}, \
{IDLE,IDLE,IDLE,YES,FREQUPDATE,IDLE}

然后将其初始化为结构数组:

static const SM_tstTaskStateStructure   SM__astData[TASKMAX]=
{
xInitDataTable
};

这个编译器是特定的吗? Fujitsu mc 的 Softune 编译器允许我以这种方式初始化结构数组,而 Code Composer Studio 则不允许。如果是这样,是否有任何类似的方法来做到这一点(如果可能的话使用定义)?

** 这些只是数值,没有指针或任何东西。

编辑:没关系,在尝试使用前置或后置增量时与所有成员一起出现

最佳答案

只要TASKMAX大于7,这个初始化就完全符合标准。

C11 (n1570), § 6.7.9 Initialization

initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }

如果在增加值时打印错误,那是因为 SM__astData 是用 const 限定符声明的。

C11 (n1570), § 6.5.3.1 Prefix increment and decrement operators

The operand of the prefix increment or decrement operator shall have atomic, qualified, or unqualified real or pointer type, and shall be a modifiable lvalue.

如果你想做这样的操作,使用下面的声明:

static /* const */ SM_tstTaskStateStructure   SM__astData[TASKMAX]=
{
xInitDataTable
};

关于c - 定义结构数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15451341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com