linux内核的里边的,看你见过没
linux内核的里面的,看你见过没C/C++ codefor (i 0 i boot_mem_map.nr_map i++) {printk( memory: %
linux内核的里面的,看你见过没
C/C++ code for (i = 0; i < boot_mem_map.nr_map; i++) { printk(" memory: %0*Lx @ %0*Lx ", //这就是我的问题 field, (unsigned long long) boot_mem_map.map[i].size, field, (unsigned long long) boot_mem_map.map[i].addr);
中间的printk里面的%0*Lx @ %0*Lx 是什么意思???
[解决办法]http://msdn.microsoft.com/en-us/library/25366k66
[解决办法]简短捷说就是用后面的field的值代替*指明输出要占的字符宽度,不足左边补0。
[解决办法]簡單一些就是*代表一個寬度
平時咱們會用%10d,但有時候這個10寬度,咱們不肯定
能用一個變量代示printf("%*D", a, b)
[解决办法]格式的控制%md----m是个整数常量----这是最初学会的吧?----代表打印宽度的m限制了灵活性。
则有%*d----*对应后面的一个参数--整数表达式(最简单的就是变量)的值,打印宽度由这个值确定
例子
for(a=5; a<20; a++)
printf("%*d\n",a,b);
b的值打印宽度由a确定,而a(宽度可变)