' ' 之前的预期表达
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 编译器)
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 编译器)