C语言error: expected '=', ',', ';', 'asm' or '__attribute__' b

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言error: expected '=', ',', ';', 'asm' or '__attribute__' b相关的知识,希望对你有一定的参考价值。

自己做的个练手的小程序,头文件里定义结构体
typedef struct _store

int id;
Prop prop[9];
Store;
其中Prop是另一个结构体,已经测试过没问题的,在.c文件中定义结构体变量
Store WeaponStore;
WeaponStore.id = 1;
编译时报上面的错误,测试是最后一句有问题,把它注释了就不会报错,但是想不通啊,这是结构体成员的正常赋值啊,不知哪里出问题了???

从代码段的情况看,不会出现你说的问题。如果WeaponStore.id = 1;编译出错,请把这一行重敲一遍试试,有可能夹杂了不可显示字符——只是猜测。追问

试过了,没用,一样的错误

追答

我不信!

这有何错误?

追问

我在其他程序里试过,这一部分代码直接复制过去完全没有问题,在这不知受到什么影响,就是不行,所以郁闷啊。
算了不纠结了,我换个方法吧,还是谢谢你!

参考技术A 你得把初始化语句放在 main 函数内。不能在全局。 参考技术B struct Store WeaponStore;
~~~~~~~~~~~~~~~~~~~~~~~追问

这个也有试过,还是同样的问题,郁闷死了

C和指针 第十二章 结构体 整体赋值 error: expected expression

定义结构体后整体赋值时发生错误

typedef struct NODE {
	struct NODE *fwd;
	struct NODE *bwd;
	int value;
} Node;
//声明变量
Node first;
first = {NULL, &second, 4};

错误: error: expected expression

之所以不行是,{}内容被当做语句块了,c语言允许直接对结构体初始化,或者在赋值的时候加上类型说明,或者是逐一赋值。

初始化赋值: 

typedef struct NODE {
	int value
} Node;
//初始化赋值
Node a = {1};
Node b;
b = a;

添加类型赋值:

Node A;
A = (Node){NULL, NULL, 1};

 单个赋值:

Node A;
A.value = 1;

所以,除非初始化或者强制类型转换否则,无法整体赋值结构体。

http://stackoverflow.com/questions/12189480/why-structs-cannot-be-assigned-directly

以上是关于C语言error: expected '=', ',', ';', 'asm' or '__attribute__' b的主要内容,如果未能解决你的问题,请参考以下文章

error: expected `;' before '' token这是啥错误

C语言报错:error: expected ‘while’ at end of input } ^

[Error] expected expression before','token 是啥意思?

error: expected declaration specifiers or '...' before xxx(xxx是函数形参)

C语言出现expected identifier or '('是啥意思?

c语言错误 expected identifier or '(' before 'else‘