繁体   English   中英

Printf不替换格式字符串参数

[英]Printf not replacing format string parameters

我正在尝试做一项作业,涉及在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格式,我在这里扯了一下头发,这项工作很快就要完成了! 救命!

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

%d在printf中不是整数吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM