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

《Essential C++》习题1.8编译出现expected ","错误求助

问题原因
  • 直接触发expected a ","报错的原因是数组语法使用错误:C中声明数组、访问数组元素都需要使用方括号[],你代码中定义usr_msgs数组时错误使用了圆括号()写成static const char* usr_msgs( rsp_cnt ),后续返回时也错误用圆括号访问元素usr_msgs(num_tries),不符合C语法要求。
  • 第二个语法错误是嵌套定义函数:C++标准不支持在函数内部定义另一个函数,你将msg_to_usr函数定义在main函数内部,编译时也会触发语法错误。
  • 代码中存在两处拼写错误:字符串里的male应为make,quess应为guess,不影响编译但会导致输出内容错误。
  • 额外问题:当前main函数没有任何调用逻辑、也没有返回值,修复语法问题后也无法正常运行输出结果。
修复方案
  • 将msg_to_usr函数的定义移动到main函数外部
  • 把所有数组相关的圆括号替换为方括号
  • 修正拼写错误
  • 在main函数中补充测试调用逻辑,添加返回值
修复后完整代码
#include <iostream>
#include <string>

using namespace std;

const char* msg_to_usr(int num_tries)
{
    const int rsp_cnt = 5;
    static const char* usr_msgs[rsp_cnt] = {
        "Go on,make a guess.",
        "Oops! Nice guess but not quite it.",
        "Hmm.Sorry Wrong again",
        "Ah, this is harder than it looks,no?",
        "It must be getting pretty frustrating by now!"
    };
    if (num_tries < 0)
        num_tries = 0;
    else if (num_tries >= rsp_cnt)
        num_tries = rsp_cnt - 1;
    return usr_msgs[num_tries];
}

int main()
{
    // 测试调用示例
    cout << msg_to_usr(2) << endl;
    return 0;
}

内容的提问来源于stack exchange,提问作者Hau Teck Seng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:18:01