预期表达之前' '

时间:2015-05-25 08:52:33

标签: c structure typedef

file.h

typedef struct xyz{
    unsigned int a;
    }__attribute__ ((packed,aligned(1))) abc,*ptr;

file.c

volatile unsigned int *add;
 add = &abc;
  

错误:abc'

之前的预期表达

有人可以帮忙吗?

2 个答案:

答案 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编译器)