当我尝试编译以下内容时:
bool matrix[h][w];
bool c = 0;
switch(1) // was close?
{
case matrix[y][x-1]: // up 1
case matrix[y-2][x-1]: // down 1
case matrix[y-1][x]: // right 1
case matrix[y][x-2]: // left 1
c = 1;
break;
}
返回the value of 'matrix' is not usable in a constant expression
。我做错了什么?
答案 0 :(得分:7)
case
语句中使用的表达式需要是编译时常量。您可以使用:
case 1:
case 2:
等,不是
case matrix[y][x-1]: // up 1
case matrix[y-2][x-1]: // down 1
此外,switch()的操作数应该是运行时变量,而不是编译时常量。例如,switch(matrix[y][x-1])
就可以了。