在C头文件(.h)中定义自引用结构?

Tim*_*ene 8 c header

我正在尝试创建一个在两个.c源文件中使用的结构来创建一个简单的链表结构.我认为这样可以节省在头文件中创建结构的时间,但是,我在*之前得到'解析错误'错误.

这是我正在使用的代码:

/*
 * Structures.h
 *
 *  Created on: Dec 17, 2011
 *      Author: timgreene
 */

#ifndef STRUCTURES_H_
#define STRUCTURES_H_

typedef struct list_struct {
    int data;
    struct list_struct* next;
    struct list_struct* prev;
} list;

#endif /* STRUCTURES_H_ */
Run Code Online (Sandbox Code Playgroud)

编辑:我最初省略了一个细节,我实际上正在使用XMOS工具链中的xcc进行编译.我仍然不明白.h文件语法会有所不同.

它可能是我正在使用的编译标志吗?

这是控制台打印输出:

xcc -O0 -g -Wall -c -MMD -MP -MF"filter.d" -MT"filter.d filter.o " -target=XC-1A -o filter.o "../filter.xc"
In file included from ../filter.xc:15:
Structures.h:13: error: parse error before '*' token
Structures.h:14: error: parse error before '*' token
Structures.h:15: error: parse error before '}' token
Run Code Online (Sandbox Code Playgroud)

Dmi*_*tri 10

在一些XMOS文档中查看,似乎问题是XC不是C,它只是一种类似C语言的语言.来自"XC编程指南":

XC提供了许多与C相同的功能,主要的缺点是支持指针.

...这解释了为什么它不接受你结构中的指针nextprev指针.

显然,xcc可以让你混合使用C和XC源代码,所以如果你要将结构的使用限制为C代码,它应该可以工作.从"XCC命令行手册"中可以看出,任何带有.xc扩展名的内容(如上面使用的命令行中)都默认为XC而不是C源代码.这可以通过将选项-xc放在命令行上的C源之前和-x之后(或者只是用.c扩展名重命名文件)来覆盖.

如果你必须使用XC而不是C,你可能需要找到另一种做事方式(数组,也许?).