猿问

C / C ++中的Test_bit宏

我试图通过ioctl()读取linux设备的输入,并且看到了很多带有“ test_bit”宏的代码示例,但是我发现的唯一代码是:#define test_bit(bit, array) (array[bit / 8] & (1 << (bit % 8))),它不起作用。我得出的结论是,为了拥有此宏,我的班级中可能要包含一些东西。有几天有人遇到这个问题,有人可以帮我吗?谢谢


编辑:这是我正在运行的代码:


void test(){

uint8_t key_b[KEY_MAX/8 + 1];

/* the events (up to 64 at once) */

const char *keyboard = "/dev/input/keyboard0";

int keybrdToCapture;

int yalv;

keybrdToCapture = open(keyboard, O_RDONLY);


memset(key_b, 0, sizeof(key_b));

ioctl(keybrdToCapture, EVIOCGKEY(sizeof(key_b)), key_b);


for (yalv = 0; yalv < KEY_MAX; yalv++) {


    if (test_bit(yalv, key_b)) {

        switch ( yalv)

            {

            case 0x1c :

                dial->setMessage("Enter");

                dial->show();

                break;

            case 0x66 :

                dial->setMessage("Home");

                dial->show();

                break;

            case 0x3b :

                dial->setMessage("F1");

                dial->show();

                break;

            case 0x3c :

                dial->setMessage("F2");

                dial->show();

                break;

            default:

                dial->setMessage("Unknow for now");

                dial->show();

            }

    }

}

}


守着星空守着你
浏览 562回答 1
1回答
随时随地看视频慕课网APP
我要回答