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

C shell开发报错:char传递给char**参数出现类型转换不兼容

问题原因分析
  • 你定义的store_history函数要求接收的参数是char *类型(即字符串指针,指向整行输入内容的首地址)
  • 你调用时写的store_history(*line)存在类型错误:line本身已经是char *类型,加*解引用后会得到char类型(也就是输入字符串第一个字符的ASCII值,属于整数类型),和函数要求的指针类型完全不匹配,因此触发类型转换报错。
解决方法

直接修改lsh_loop函数中调用store_history的代码,去掉多余的解引用符号即可:

// 替换掉原有的 store_history(*line);
store_history(line);
可选优化提示
  • 你当前的store_history实现中,滚动覆盖旧历史记录时没有释放旧字符串的内存,会产生内存泄漏,如果需要优化可以在覆盖对应位置的历史记录前,调用free释放该位置存储的旧字符串
  • 全局变量cmdcount和history_count作用完全重复,都是统计已存储的历史命令数量,可以合并为一个变量减少冗余

内容的提问来源于stack exchange,提问作者dismal-audience

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:06:02