' ' 之前的预期表达

expected expression before ' '

file.h

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

file.c

volatile unsigned int *add;
 add = &abc;

ERROR : Expected Expression before 'abc'

有人可以帮忙吗?

您正在尝试获取类型地址,而不是变量地址。 & 对类型名没有多大意义。

abc 是类型名,不是变量。编译器告诉您,如果您使用 &,那么它希望在它旁边看到一个变量名,以便它确实可以获取它的地址。

如果我正确理解了你的意图,在 file.c 你可以尝试这样的事情:

abc variable;
volatile unsigned int *add;
add = &variable;

在定义类型的同时声明变量是没有意义的。将它们分开:

typedef struct xyz{
    unsigned int a;
} abc_t;

abc_t* ptr;

而且__attribute__ ((packed,aligned(1)))不是标准C,所以你必须确保你的编译设置为编译非标准代码。

(在 gcc 中,这是通过调用不带 -std 参数的程序来完成的,默认情况下它将是一个非标准的 C 编译器)