file.h
typedef struct xyz{
unsigned int a;
}__attribute__ ((packed,aligned(1))) abc,*ptr;
file.c
volatile unsigned int *add;
add = &abc;
错误:abc'
之前的预期表达
有人可以帮忙吗?
答案 0 :(得分:3)
您尝试获取某种类型的地址,而不是变量。 <{1}}对类型名称没有多大意义。
&
是一个typename,而不是一个变量。编译器告诉你,如果你使用abc
,那么它希望在它旁边看到一个变量名,这样它确实可以使用它的地址。
如果我理解你的意图,在file.c中你可以尝试这样的事情:
&
答案 1 :(得分:0)
在定义类型的同时声明变量是没有意义的。将它们分开:
typedef struct xyz{
unsigned int a;
} abc_t;
abc_t* ptr;
__attribute__ ((packed,aligned(1)))
也不是标准C,因此您必须确保将编译设置为编译非标准代码。
(在gcc中,这是通过调用没有-std参数的程序来完成的,默认情况下它将是非标准的C编译器)