【问题标题】:For loop - "Error: Expected a declaration"For 循环 - “错误:需要声明”
【发布时间】:2015-08-04 08:20:39
【问题描述】:

作为基于文本的 Battle Ship 游戏的一部分,我正在尝试在控制台中显示一个简单的网格/板。不幸的是,我在制作网格时遇到了错误。网格由二维数组表示,-我使用 for 循环将网格的每个元素初始设置为“EMPTY”。 但是,当我尝试让代码运行时,我收到一条错误消息,提示“需要声明”和“语法错误:')'”。我在做什么错?这是有问题的代码部分:

enum GridContent {SHIP, HIT, MISS, EMPTY};

const int GRID_SIZE = 10;

GridContent board[GRID_SIZE][GRID_SIZE];

// Intellisense error on "for": "Expected a declaration."
for (int y = 0; y < GRID_SIZE; y++)
/* Errors for above line: "Missing ';' before '++', '<', '{', and ')'",
"Syntax error: ')'", "Syntax error: 'for'", "'int y' : redefinition"" */
{ // "Missing ';' before '{'"
    for (int x = 0; x < GRID_SIZE; x++)
        board[y][x] = EMPTY;
}

【问题讨论】:

  • 您声明了board,但随后您尝试将值分配给grid。也不清楚你的Grid 是什么
  • 此外,您循环遍历 xy,但随后您尝试在最后一个索引为 GRID_SIZE-1 的数组中访问(很可能)无效索引 GRID_SIZE
  • 对不起我的残暴代码!我现在已经对其进行了编辑,但仍然出现错误。

标签: c++ for-loop multidimensional-array visual-studio-2013 console


【解决方案1】:

你必须用我认为的 GridContent 替换 Grid 网格板[GRID_SIZE][GRID_SIZE];

【讨论】:

    【解决方案2】:

    我认为你的意思是

    for (int x = 0; x < GRID_SIZE; x++)
        board[y][x] = EMPTY;
    

    而不是

    for (int x = 0; x < GRID_SIZE; x++)
        grid[GRID_SIZE][GRID_SIZE] = EMPTY;
    

    在您的代码中,sn-p grid 是一个未声明的标识符,使用值 GRID_SIZE 作为索引是错误的,因为相应的元素将超出数组。

    从你的代码 sn-p 也不清楚是否必须像这样定义数组

    Grid board[GRID_SIZE][GRID_SIZE];
    

    或喜欢

    GridContent board[GRID_SIZE][GRID_SIZE];
    

    【讨论】:

    • 哇,对不起,我的代码一团糟。我已经对其进行了编辑,以便现在更有意义。我仍然收到错误消息。
    • @Warran Penner 如果您将其编译为 C++ 代码,则更新后的代码不包含任何错误。
    • 很奇怪。我正在尝试在 Visual Studio 2013 for Desktop 中运行它,但我遇到了很多错误。我再次更新了 sn-p 以显示我得到了什么。感谢您的宝贵时间。
    • @Warran Penner 检查程序文件扩展名是否为 .c 而不是 .cpp。可能是您将程序编译为 C 程序。
    • @Warran Penner 在命名空间中的外部函数(在您的情况下,您似乎使用了全局名称空间)您只能放置声明。
    【解决方案3】:

    数组名称是板,网格是某种类型。 1.所以我一边for循环,你应该使用板而不是网格。 2. 您的数组是 GRID_SIZE,当您访问时,您使用了该变量,这意味着 arrayIndexOutOfBound

    【讨论】:

      猜你喜欢
      • 2015-03-25
      • 2013-10-28
      • 2018-04-25
      • 2013-10-17
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      相关资源
      最近更新 更多