2016-10-08 87 views
1

我使用此代码作为2维游戏的一部分,但是当我试图编译它,它返回下列错误:情况下表达式返回错误

error C2051: case expression not constant.

这是我的代码:

switch(_getch()){ 
    case "w": 
    dir = UP; 
    break; 
    case "a": 
    dir = LEFT; 
    break; 
    case "s": 
    dir = DOWN; 
    break; 
    case "d": 
    dir = RIGHT; 
    break; 
    default: 
    break; 
} 
+2

更重要的错误方式:'从const char *无效转换为int [-fpermissive]' – xinaiz

回答

1

你应该在开关的情况下使用字符文字('w')而不是字符串("w"):

case 'w': 
    dir = UP; 
    break; 

"w"是一个字符串文字,它会衰减为char const*指针。 switch个案不能是除了一个常量整数,枚举或具有单个非显式整数或枚举转换运算符的类。指向char的指针不属于这些。

+0

这是如何解释'case expression not constant'错误?你只是说如何解决它。 – Rakete1111

+0

这个问题缺乏实际的问题,所以我没有想到它。我会编辑。 – krzaq

+0

@ Rakete1111被编辑。我希望现在好一点。 – krzaq