在这部分代码中是一个错误。它说
“运行时检查失败#3 - 正在使用变量'direct' 没有被初始化。“
如何解决此错误?
bool loop=true;
int direct;
al_install_keyboard();
ALLEGRO_TIMER *timer = al_create_timer (0.4);
ALLEGRO_EVENT_QUEUE *keystroke = al_create_event_queue();
al_register_event_source(keystroke ,al_get_keyboard_event_source() );
al_register_event_source (keystroke , al_get_timer_event_source(timer));
al_start_timer(timer);
do{
ALLEGRO_EVENT input;
al_wait_for_event(keystroke , &input );
if (input.type == ALLEGRO_EVENT_KEY_DOWN){
switch(input.keyboard.keycode){
case ALLEGRO_KEY_DOWN: direct=DOWN; break;
case ALLEGRO_KEY_UP : direct=UP;break;
case ALLEGRO_KEY_LEFT: direct=LEFT;break;
case ALLEGRO_KEY_RIGHT: direct=RIGHT;break;
case ALLEGRO_KEY_ESCAPE: loop= false;
}
}
if(input.type==ALLEGRO_EVENT_TIMER){
switch(direct){
case DOWN: moove_snake(DOWN) ; break;
case UP: moove_snake(UP) ; break;
case LEFT: moove_snake(LEFT) ; break;
case RIGHT: moove_snake(RIGHT) ; break;
}
}
}while (loop);
答案 0 :(得分:8)
初始化它:)
int direct = 0;
答案 1 :(得分:3)
如果第一个if条件if (input.type == ALLEGRO_EVENT_KEY_DOWN)
为false且第二个if(input.type==ALLEGRO_EVENT_TIMER)
为true,则表示您使用switch
未初始化的变量(int direct)。这意味着变量指向内存中的随机位,而编译器不喜欢这个事实。
通过在开头初始化变量很容易修复。例如:
int direct = UP;
答案 2 :(得分:1)
如果您尝试初始化它并且它不起作用,则可能您在代码中的其他地方遇到问题,解析器恰好在此行上失败。查看int direct;
行以上。
检查所有花括号是否匹配,在行尾有半冒号,其他一切通常看起来都不错。
如果找不到,请从int direct;
开始注释掉所有内容,然后从那里开始。
答案 3 :(得分:0)
仔细阅读!!出现消息时,您必须在关闭应用程序之前选择break而不是continue。如果它仍然不起作用,请将静态方法放在变量之前,如
static int direct;