c - pdcurses 安装有类型声明错误

标签 c curses pdcurses

我正在使用 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/

相关文章:

c - realloc 根本不diong什么,不会报错

c++ - 在 C/C++ 中使用 JACK 和 fftw 的音频频谱

python - 将多个输入行放到控制台 |诅咒

python - 使用 Python curses 自定义 RGB 颜色

python - 实现带有底部编辑行、状态栏和滚动历史记录的 "console shell"的最佳方法?

c++ - 如何静态链接 MSVC 中的库?

c - 如何在宏中使用 __func__

c++ - 我需要分配一个具有 64 位值的变量

c++ - 使用 stdscr (ncurses) 时的链接器警告

c++ - PDCurses TUI C++ Win32 控制台应用程序 - 访问冲突读取位置