Jus*_*tin 6 c struct initialization
我知道如何初始化结构(通常),但我在结构体中遇到了这个结构的麻烦
typedef struct Location{
uint8_t x;
uint8_t y;
} loc;
typedef struct Person{
loc location;
} person;
Run Code Online (Sandbox Code Playgroud)
全局变量:
static person hero;
Run Code Online (Sandbox Code Playgroud)
初始化函数:
void InitializeHero() {
person hero = {0,0, {0,0}}; // this compiles
hero.location = {0,0}; // but this does not compile
hero = {0,0,{0,0}}; // this also does not compile
}
Run Code Online (Sandbox Code Playgroud)
您的“此编译”行是正确的;这是一个初始化。另外两行无法编译,因为它们不是初始化,而是赋值。如果您使用的是足够新的 C 版本,则可以使用复合文字来完成赋值:
hero.location = (loc){0,0};
hero = (person){0,0,{0,0}};
Run Code Online (Sandbox Code Playgroud)
注意 - 您person hero在InitializeHero全局变量的阴影中声明;你可能不想要那样。
顺便说一句,您是否缺少某些字段person?这些都不应该与您所展示的内容相编译。