递归调用中的错误“[Error] 表达式列表被视为初始化程序 [-fpermissive] 中的复合表达式”
Posted
技术标签:
【中文标题】递归调用中的错误“[Error] 表达式列表被视为初始化程序 [-fpermissive] 中的复合表达式”【英文标题】:Error "[Error] expression list treated as compound expression in initializer [-fpermissive]" in recursive call 【发布时间】:2017-11-24 22:38:51 【问题描述】:在下面的代码中,在我递归调用函数的所有行中,我都会收到此错误:
[错误] 表达式列表在初始化程序 [-fpermissive] 中被视为复合表达式
我认为这与我没有放入变量类型有关, 但是当我这样做时,我得到了另一个错误,声称它需要在 '+' 或 '-' 前面有一个 ',' 或 '...'。
#include <iostream>
#include <vector>
using namespace std;
int lastmove = 0;
// Returns true if you can reach the bottom-right (otherwise returns false).
// You can move up, down, left, or right. You cannot move diagonally.
// 1 represents a wall. You cannot go through a wall.
bool winnable(int maze[5][5], int m, int n)
// Testing moves in right, down, left and up directions
// If the previous move is the opposite vertically or horizontally
// It is not valid
if (n<6&& maze[m][++n]!=1 && lastmove!=3)
if(m==5&&n==5)
return true;
lastmove = 1;
bool winnable(maze, m, ++n);
【问题讨论】:
在此处丢失bool
:bool winnable(maze, m, ++n);
或更好地将返回值分配给某些东西。并贴出所有代码。
【参考方案1】:
要正确调用winnable()
(或与此相关的任何函数),您不应指定其返回类型。
不要尝试这个:
bool winnable(maze, m, ++n);
你应该这样称呼它:
bool result = winnable(maze, m, ++n); // store the result of winnable() for later use
【讨论】:
以上是关于递归调用中的错误“[Error] 表达式列表被视为初始化程序 [-fpermissive] 中的复合表达式”的主要内容,如果未能解决你的问题,请参考以下文章