我试图在ubuntu上使用curses创建一个简单的控制台程序,但每次我尝试调用getch并等待输入时,当我输入输入时,它会引发分段错误。我在代码的另一部分使用initscr()函数初始化了库。
以下是抛出分段错误的代码部分:
int ch;
ch = getch();
非常感谢任何帮助,
Mindoo
编辑: 在为一个char切换出int之后,我得到以下警告,这些警告在前面提到的getch()之后围绕这段代码旋转。
char ch;
ch = getch();
//Get xObject position
int xObjectX = getXObject()->getPosX();
int xObjectY = getXObject()->getPosY();
switch (ch) {
case KEY_LEFT:
getXObject()->move(xObjectY, xObjectX--);
break;
case KEY_RIGHT:
getXObject()->move(xObjectY, xObjectX++);
break;
case KEY_UP:
getXObject()->move(xObjectY++, xObjectX);
break;
case KEY_DOWN:
getXObject()->move(xObjectY--, xObjectX);
break;
case KEY_BACKSPACE:
game->stop();
break;
我收到了这些警告:
TestGameState.cpp: In member function ‘virtual void TestGameState::handleInput()’:
TestGameState.cpp:21:5: warning: case label value exceeds maximum value for type
case KEY_LEFT:
^
TestGameState.cpp:25:5: warning: case label value exceeds maximum value for type
case KEY_RIGHT:
^
TestGameState.cpp:29:5: warning: case label value exceeds maximum value for type
case KEY_UP:
^
TestGameState.cpp:33:5: warning: case label value exceeds maximum value for type
case KEY_DOWN:
^
TestGameState.cpp:37:5: warning: case label value exceeds maximum value for type
case KEY_BACKSPACE:
答案 0 :(得分:0)
这个功能不太可能是原因。你怎么告诉那条线导致SF?
您可以尝试: 1.使用getchar代替 2.尽量不要使用诅咒