2016-10-08 86 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