You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言布尔代码报错:D&D单人小游戏中esObjeto函数类型冲突问题

解决 conflicting types for 'esObjeto' 编译错误

这个错误在C语言开发里是个典型的「声明顺序」问题,咱们一步步拆解解决:

问题根源

你在代码第218行调用esObjeto(place, hero)的时候,编译器还没看到这个函数的正式定义——C语言的旧规则会默认隐式声明这个函数,认为它返回int类型。但后面你在第313行定义esObjeto的时候,返回值是bool,这就和之前隐式声明的int返回值冲突了,所以编译器抛出了这个错误。

具体解决步骤

  1. 提前声明函数原型
    在所有调用esObjeto的代码之前(比如文件开头,或者第218行之前的位置),加上这个函数的原型:

    bool esObjeto(int ubicacionMatriz, int *personaje);
    

    这样编译器在遇到第218行的调用时,就明确知道这个函数的返回类型是bool,参数是int和int*,不会再用默认的int去推断了。

  2. 确保bool类型可用
    别忘了bool是C99标准引入的类型,需要包含头文件才能正常使用,所以在声明或定义esObjeto的文件开头加上:

    #include <stdbool.h>
    

    避免出现bool未定义的额外错误。

补充说明

你提到的place(矩阵位置,int类型)和hero(角色属性指针,int*类型),参数类型和函数定义完全匹配,所以只要解决函数声明的问题,这个编译错误就能彻底消除。

内容的提问来源于stack exchange,提问作者Martín Ormazabal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:29:29