我的代码出了什么问题? (pdcurses / getmaxyx)

时间:2010-06-15 02:25:49

标签: c++ warnings runtime-error curses access-violation

它给了我getmaxyx行的访问冲突(main函数的第二行),并且还给了我这两个警告:

LINK : warning LNK4049: locally defined symbol "_stdscr" imported
LINK : warning LNK4049: locally defined symbol "_SP" imported

是的,它与我提出的另一个问题中的代码相同,只是我说得更清楚了。是的,我之前用pdcurses编写程序没有任何问题。

#include <time.h>
#include <curses.h>
#include "Ball.h"
#include "Paddle.h"
#include "config.h"

int main(int argc, char *argv[])
{
    int maxY, maxX;
    getmaxyx(stdscr, maxY, maxX);

    Paddle *paddleLeft = new Paddle(0, KEY_L_UP, KEY_L_DOWN);
    Paddle *paddleRight = new Paddle(maxX, KEY_R_UP, KEY_R_DOWN);
    Ball *ball = new Ball(paddleLeft, paddleRight);

    int key = 0;

    initscr();
    cbreak();
    noecho();
    curs_set(0);

    while (key != KEY_QUIT)
    {
        key = getch();
        paddleLeft->OnKeyPress(key);
        paddleRight->OnKeyPress(key);
    }

    endwin();
    return 0;
}

2 个答案:

答案 0 :(得分:1)

您需要在initscr

之前致电getmaxyx

答案 1 :(得分:1)

自从我使用curses以来已经很长时间了,但我猜你需要在之前调用initscr() 来调用getmaxyx之类的任何其他诅咒。

此外,您可能还缺少对initscr返回的错误检查,并且需要正确使用返回值(可能您必须将其传递给其他curses方法?)。