【发布时间】:2020-02-13 07:14:12
【问题描述】:
我曾经设法返回该函数,并且当我运行测试时它通过了我在 utils.c 上有这个函数:
int (util_sys_inb)(int port, uint8_t *value) {
uint32_t val;
if(sys_inb(port, &val) != OK) return 1;
*value = (uint8_t)val;
return 0;
}
由于参数的格式,这只是用于包装函数 sys_inb()。 然后我需要正确调用它的次数。 我有另一个文件:keyboard.c 有一个全局变量 extern int count。
使用此功能:
int sys_inb_count(int port, uint8_t *value) {
if(util_sys_inb(port,value)!=OK){ return 1;}
count++;
return count;
}
我做对了一次,在第一个函数上返回值,但后来我做了不同的事情,测试再也无法通过了。 如果你能帮上忙,我很感激,我一直在拔头发。
我试过了,把计数器直接放在第一个函数上,它起作用了,但我又试着做一次,然后我就不行了。
它编译并运行,但我明白了: https://imgur.com/a/YZsd1Ok
【问题讨论】:
-
count在哪里被初始化? -
@daShier 出了函数,我只是没提,在keyboard.h上我有extern int cout;
-
那么
OK等于 1 还是 0?如果返回OK以外的内容,则不会增加count。如果是全局的,为什么需要返回count?但我们需要查看更多代码才能真正进行调查。 -
我不必实际返回计数,我可以返回其他函数之一,因为它们返回一个整数。但是如果有效,则返回 0,如果无效,则返回 1。所以没关系是 0。我可以更改它们以返回其中的计数器,而不是在无法使其工作的 keyboard.c 文件上执行此操作。
-
您提供的屏幕截图显示了 12 行输出,计数为 12。为什么这不正确?请给我们一个minimal reproducible example,并附上输入、预期输出和接收输出!顺便说一句,您应该直接在问题中复制文本而不是屏幕截图。