pdcurses安装有类型声明错误

问题描述 投票:0回答:2

我正在使用 pdcurses 库(版本 3.4)在 C 中制作基于文本的游戏。我正在学习安装 pdcurses 的教程,该教程使用的是 3.4 版。如果我下载更新的版本(例如 3.9),这似乎是一个完全不同的安装过程,我根本不明白。

这是我项目的文件系统,以防我不知不觉安装错了。

  • 仓 --- 主要
  • 包括 ---块.h --- 网格.h
  • 库 --- pdcurses.lib
  • pdcurses --- 诅咒.h ---面板.h
  • blocks.c
  • grid.c
  • main.c
  • 制作文件
  • pdcurses.dll

当我运行 make 时,我得到这个错误:

pdcurses/curses.h:92:23: 错误:声明说明符中有两种或多种数据类型 92 | typedef 无符号字符布尔; /* PDCurses 布尔类型 */ | ^~

我的编译命令: gcc -std=c17 -g -Wall -Iinclude -Ipdcurses main.c blocks.c grid.c -o bin etris -Llib

我试过重新安装 pdcurses,甚至用

typedef unsigned char bool;
 代替 
#include <stdbool.h>

c curses pdcurses
2个回答
0
投票

听起来好像另一个头文件在其他地方定义了

bool

根据您使用的编译器,您可能需要将定义包装在

#ifndef
/
#endif
宏中,以告诉编译器跳过该类型定义,因为它已被另一个文件定义。


0
投票

您的基本问题是

bool
是自 C99 以来标准 C 的一部分,但也是早于 C99 的 curses 规范所必需的。 PDCurses 以 C89 及更高版本为目标。这个特殊的冲突在 PDCurses 3.7 中得到了解决,并在 3.9 中做了一些进一步的调整,尽管它仍然是一个潜在的问题。

3.9 安排其文件层次结构与 3.4 略有不同,但差异不是很大。我不知道你引用的是什么教程,但如果我这样做了,也许我可以澄清一些事情。让您使用最新的可用版本是迄今为止最好的解决方案。

与此同时,你真的需要那个“-std=c17”吗?你也许可以试试“-std=c89”。

© www.soinside.com 2019 - 2024. All rights reserved.