我正在使用pdcurses库(3.4版)用C语言制作一个基于文本的游戏.我正在学习一个关于安装pdcurses的教程,该教程使用的是版本3.4.如果我下载一个较新的版本(例如3.9),这似乎是一个完全不同的安装过程,我完全不理解.

这是我项目的文件系统,以防我在不知情的情况下错误地安装了它.

  • 箱子 -Main
  • 包括 -BLOCKS.H -Grid.h
  • 利布 -pdcurse.lib
  • Pdcurses -诅咒.h -panel.h
  • Blocks.c
  • Grid.c
  • 手C
  • 生成文件
  • Pdcurses.dll

当我运行make时,我收到以下错误:

Pdcurses/cures.h:92:23:错误:声明说明符中有两个或更多数据类型 92|tyfinf unsign char bool;/*PDCurses Boolean类型*/ |^~

我的编译命令: GCC-标准=C17-g-WALL-IINCLUDE-Ipdcurses 手C块.c网格c-o bin\俄罗斯方块-Llib

我试过重新安装pdcurses,甚至用#include <stdbool.h>取代了typedef unsigned char bool;

编辑:多亏了William McBrine的回应,我已经修复了这个问题,只需下载PDCurses 3.9,按照wincon/Readme.md中的构建说明操作,并将文件添加到我的MinGW文件夹中.谢谢!

推荐答案

您的基本问题是,bool是从C99开始的标准C的一部分,但也是早于C99的Curses规范所要求的.PDCurses的目标是C89及更高版本.这一特殊冲突在PDCurses 3.7中得到了解决,并在3.9中作了一些进一步的调整,尽管它仍然是一个潜在的问题.

3.9的文件层次 struct 与3.4略有不同,但差别并不大.我不知道您引用的是什么教程,但如果我引用了,也许我可以澄清一些事情.让您使用最新的可用版本是目前为止最好的解决方案.

同时,你真的需要"-STD=C17"吗?您也许可以try "-std=c89".

C++相关问答推荐

我的C语言中的回归函数如何工作?

定义_MISIX_C_SAL时,在MacOS上编译失败,并出现奇怪错误

根据工具链文件中的定义替换单个函数定义

问关于C中的指针和数组

如何使用低级C++写出数值

为什么net/if.h在ifaddrs.h之前?

GDB输出ARM助记符

在句子中转换单词的问题

是否需要包括<;errno.h>;才能使用perror?

获取前2个连续1比特的索引的有效方法

C语言中的数字指针

Go和C中的数据 struct 对齐差异

使用Open62541向OPCUA服务器发送读请求时内存泄漏

静态初始化顺序失败是否适用于C语言?

S,在 struct 中创建匿名静态缓冲区的最佳方式是什么?

Linux分段故障(核心转储)

意外的C并集结果

为什么一个在线编译器拒绝这个VLA代码,而本地的Apple clang却不拒绝;t?

在分配内存后使用指针是未定义的行为吗?

10 个字节对于这个 C 程序返回后跳行的能力有什么意义