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" 和结构的标记名。编译器不理解您希望这些是独立的。使用如图所示的代码,预处理阶段会将标识符 spells
的 all 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
。这会产生无效代码。
我正在用 C 语言制作类 rogue-like 游戏,但遇到文件链接问题。 我正在制作一个自定义头文件,我在其中声明了一个结构数组,但是当我编译这段代码时:
#ifndef spells
#define spells
struct spells SpellList[55];
#endif // spells
我收到一个错误:在“[”令牌之前需要标识符或“(”。
您将标识符 spells
用于两个不同的目的:作为头文件的 "guard macro" 和结构的标记名。编译器不理解您希望这些是独立的。使用如图所示的代码,预处理阶段会将标识符 spells
的 all 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
。这会产生无效代码。