1

我正在尝试做一个涉及修改 minix 中的一些内核代码的家庭作业,我遇到了我见过的最奇怪的问题。

我正在修改 pm 服务器上的 alloc.c(对于那些熟悉 minix 的人),并且我在文件顶部添加了一个全局变量:

PUBLIC int logging = 0;

然后稍后我试图在我添加到内核的一个函数中读取变量:

PUBLIC int do_setalloc(void)
{
  printf("logging = %i\n", logging");
  return (OK);
}

然后我有一个在内核空间之外运行此代码的测试程序:

int main(void)
{
  message m;
  m.m1_i1 = 1;
  m.m1_i2 = 1;
  _syscall(MM,69,&m);
  return 0;
}

这是此代码运行时的输出:

logging = %i

Printf 实际上并没有用整数的实际值替换 %i 格式,我在这里扯掉我的头发,这个任务很快就要到期了!帮助!

4

2 回答 2

3

我不认为 "%i" 是有效的格式转换;最常用的打印 int 的标签是“%d”。但是我刚刚看到的 printf 手册页声称 %i 是 %d 的同义词。也许 minix printf 没有定义它。

于 2011-04-04T02:26:11.197 回答
2

不是%dprintf中的整数吗?

于 2011-04-04T02:25:43.817 回答