C语言布尔代码报错:D&D单人小游戏中esObjeto函数类型冲突问题
解决
conflicting types for 'esObjeto' 编译错误 这个错误在C语言开发里是个典型的「声明顺序」问题,咱们一步步拆解解决:
问题根源
你在代码第218行调用esObjeto(place, hero)的时候,编译器还没看到这个函数的正式定义——C语言的旧规则会默认隐式声明这个函数,认为它返回int类型。但后面你在第313行定义esObjeto的时候,返回值是bool,这就和之前隐式声明的int返回值冲突了,所以编译器抛出了这个错误。
具体解决步骤
提前声明函数原型
在所有调用esObjeto的代码之前(比如文件开头,或者第218行之前的位置),加上这个函数的原型:bool esObjeto(int ubicacionMatriz, int *personaje);这样编译器在遇到第218行的调用时,就明确知道这个函数的返回类型是
bool,参数是int和int*,不会再用默认的int去推断了。确保
bool类型可用
别忘了bool是C99标准引入的类型,需要包含头文件才能正常使用,所以在声明或定义esObjeto的文件开头加上:#include <stdbool.h>避免出现
bool未定义的额外错误。
补充说明
你提到的place(矩阵位置,int类型)和hero(角色属性指针,int*类型),参数类型和函数定义完全匹配,所以只要解决函数声明的问题,这个编译错误就能彻底消除。
内容的提问来源于stack exchange,提问作者Martín Ormazabal
相关产品推荐
相关产品推荐

