您的位置:首页 > 其它

printf格式化输出时动态指定字符宽度

2009-04-16 21:16 417 查看
     笔者最近开发的项目中,经常要打印一些地址信息。而开发的软件既要在32位的cpu上运行,还要在64位CPU上运行。之前做的很笨,为了兼容,每次遇到需要打印的地方,就得用宏区分开,写两句打印,很是麻烦。eg:

     #if ( CPU == IA32)

      printf("The address of var is %08x/n", &var);

     #else if(CPU == IA64)

      printf("The address of var is %016x/n",&var);

     #endif

每次都这么弄,被弄烦了,就想偷懒,把这两句统一成一句。到处找资料,总算搞定:用*来完成动态指定字符宽度。代码如下:

     printf("The address of var is %0*x/n",2*sizeof(void *), &var);

   在32位机和64机上,2*sizeof(void *)的值分别是8和16,0后面的*分别被替代为8和16。实现了大一统。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: