问题描述
- c语言struct的声明定义问题,这段代码对吗,怎么理解?
-
static struct {
int32_t hold_course_cd;
bool locked_course;
float locked_course_err;
} steer_state = {
hold_course_cd : -1,
locked_course : false,
locked_course_err : 0
};
解决方案
定义了结构体,然后再定义 了 static 的结构体变量 steer_state、并对它进行了初始化。
解决方案二:
static struct {
int32_t hold_course_cd;
bool locked_course;
float locked_course_err;
} steer_state = {-1, false, 0};
或
static struct {
int32_t hold_course_cd;
bool locked_course;
float locked_course_err;
} steer_state;
steer_state={-1,alse,0};
解决方案三:
将struct和后面那一大块,当成一个整体来看,就清晰了。
比如 static int a = 1;
这里的
int 相当于 struct {.....}
a 相当于steer_state
1 相当于 {...}
注意上面是“相当于”不是“等效于”,
就是用法一样的,本身的意义不一样而已。
另外,上面的方法代码也应该没问题的,只不过初始化的时候,还必须和struct体的成员顺序保持一致。
解决方案四:
结构体初始化不应该使用结构体内的变量名,直接按顺序初始化就行。
解决方案五:
luffy8ace 回答的很正确!
解决方案六:
没什么问题,gcc扩展语法。
解决方案七:
定义了一个结构体,它包含三个变量,第一个为整型变量,第二个为布尔型变量,第三个为浮点型,并把他们分别赋值为-1,false,0
时间: 2024-10-27 16:32:10