C - "Error: Expected identifier or '(' before '[' token"

C - "Error: Expected identifier or '(' before '[' token"

我正在用 C 语言制作类 rogue-like 游戏,但遇到文件链接问题。 我正在制作一个自定义头文件,我在其中声明了一个结构数组,但是当我编译这段代码时:

#ifndef spells
#define spells

struct spells SpellList[55];

#endif // spells

我收到一个错误:在“[”令牌之前需要标识符或“(”。

您将标识符 spells 用于两个不同的目的:作为头文件的 "guard macro" 和结构的标记名。编译器不理解您希望这些是独立的。使用如图所示的代码,预处理阶段会将标识符 spellsall uses 替换为空,然后解析阶段将看到

struct SpellList[55];

这是无效的。

您必须重命名守卫宏或结构标记。由于您永远不需要在其他任何地方引用守卫宏,因此重命名守卫宏可能是最简单的方法。

顺便说一下,“rouge" is a type of make-up. The kind of game you are making is a rogue-like.

我认为问题在于使用您定义的符号 spells 作为类型。

你在哪里:

struct spells SpellList[55];

预处理器将在编译器尝试编译代码之前用 spells 定义(无)的值替换该行中的 spells。这会产生无效代码。