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

标签 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_ */

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

XC provides many of the same capabilities as C, the main omission being support for pointers.

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

显然,xcc 允许您混合使用 C 和 XC 源代码,因此如果您将结构的使用限制在 C 代码中,它应该可以工作。从“XCC Command-Line Manual”看来,任何带有 .xc 扩展名(如您在上面使用的命令行中)的内容默认都被视为 XC,而不是 C,源代码。这可以通过在命令行上的 C 源代码之前放置选项 -xc 和之后的 -x 来覆盖(或者只是用 .c< 重命名文件 扩展)。

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

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

相关文章:

html - 如何使垂直列表水平移动?

php - 困惑的人寻求 : "Warning: Cannot modify header information"

c - C标准二叉树

c - 注意带有 R 代码的 C 函数名称

c - Linux 循环中的 Fork 功能

c++ - 为什么在多文件中使用类声明友元函数时出现错误类未定义?

c - 求解使 5x5 对称矩阵奇异所需的值

c - c中的unsigned int数据类型

javascript - 如何制作与横幅背景相同的固定标题?

php检查gravatar是否存在header错误