我正在尝试创建一个在两个.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_ */

编辑:我最初确实省略了一个细节,即我实际上是使用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

最佳答案

在一些XMOS文档中环顾四周,似乎问题在于 XC不是C ,它只是一种类似于C的语言。从“XC编程指南”中:



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

显然,xcc可以让您混合使用C和XC源代码,因此,如果将结构的使用范围限制为C代码,则应该可以使用。从“XCC命令行手册”中可以看出,任何带有.xc扩展名的东西(如您在上面使用的命令行中一样)默认情况下都被视为XC源代码,而不是C源代码。可以通过在命令行中的C源代码之前放置-xc选项,然后在其后放置-x(或只是使用.c扩展名重命名文件)来覆盖此选项。

如果必须使用XC而不是C,则可能需要找到另一种处理方式(可能是数组?)。

关于c - 在C头文件(.h)中定义自引用结构?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8549077/

10-13 05:07