我正在使用 pdcurses 库(版本 3.4)用 C 语言制作一个基于文本的游戏。我正在遵循 pdcurses 安装教程,该教程使用版本 3.4。如果我下载一个较新的版本(例如3.9),这似乎是一个完全不同的安装过程,我根本不明白。
这是我项目的文件系统,以防我无意中安装错误。
- 垃圾箱 --- 主要
- 包括 --- block .h --- grid.h
- 库 --- pdcurses.lib
- pdcurses --- 诅咒.h --- panel.h
- block .c
- 网格.c
- main.c
- 生成文件
- pdcurses.dll
当我运行 make 时,出现此错误:
pdcurses/curses.h:92:23:错误:声明说明符中有两个或多个数据类型 92 | 92 typedef 无符号 char bool 值;/* PDCurses bool 类型 */ | ^~
我的编译命令: gcc -std=c17 -g -Wall -Iinclude -Ipdcurses main.c blocks.c grid.c -o bin\tetris -Llib
我尝试重新安装 pdcurses,甚至替换 typedef unsigned char bool;
与 #include <stdbool.h>
编辑:感谢 William McBrine 的回复,我通过简单地下载 PDCurses 3.9 并按照 wincon/README.md 中的构建说明并将文件添加到我的 MinGW 文件夹中解决了该问题。谢谢!
最佳答案
你的基本问题是 bool
是自 C99 以来标准 C 的一部分,但也是早于 C99 的 curses 规范所要求的。 PDCurses 针对 C89 及更高版本。这一特殊冲突已在 PDCurses 3.7 中得到解决,并在 3.9 中进行了一些进一步调整,尽管它仍然是一个潜在的问题。
3.9 的文件层次结构排列方式与 3.4 略有不同,但差异并不大。我不知道你引用的是什么教程,但如果我这样做了,也许我可以澄清一些事情。让您使用最新的可用版本是迄今为止最好的解决方案。
同时,您真的需要“-std=c17”吗?您也许可以尝试“-std=c89”。
关于c - pdcurses 安装有类型声明错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76174920/