我在Ubuntu上使用CodeLite并且因为一些奇怪的原因GCC在我尝试使用返回指向结构的指针的函数编译代码时不断抛出此错误:
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
以下是我为了演示此错误而编写的示例:
#include <stdio.h>
typedef struct test_t {
unsigned char someVar;
};
test_t* testFunc() { // GCC throws that error on this line
return NULL;
}
int main(int argc, char **argv)
{
return 0;
}
因此,除非我忘记一些明显的东西,否则我通常希望这些代码能够在任何其他编译器上编译,即MSVC,所以我完全不知道为什么它不起作用。
希望你们中的一位专家能够赐教。
谢谢!
答案 0 :(得分:10)
您定义了一个名为struct test_t
的类型。稍后在代码中尝试使用类型test_t
。你的程序中没有这种类型。您定义的类型再次被称为struct test_t
。这就是编译器试图告诉你的内容。
在函数声明中使用正确的类型名称
struct test_t* testFunc() {
return NULL;
}
或为test_t
第一个
struct test_t
typedef struct test_t test_t;
test_t* testFunc() {
return NULL;
}
答案 1 :(得分:4)
您的问题是您缺少typedef的“新名称”。尝试将声明更改为:
typedef struct test_t {
unsigned char someVar;
} test_t;
答案 2 :(得分:4)
您需要将struct
定义更改为:
typedef struct {
unsigned char someVar;
} test_t;
答案 3 :(得分:0)
您应该像这样定义test_t:
typedef struct {
unsigned char someVar;
} test_t;