我理解unsigned和unsigned int之间的区别。但我的问题有点不同。
我是ioremaping(linux)一个特定的内存,我想读取内存。 我做了以下事情:
func()
{
unsigned int *p;
p = (unsigned int *)ioremap(ADDR,8*sizeof(unsigned int));
for (i = 0; i <= 7; i++)
pr_err("p[%d] = %d", i, p[i]);
}
这完美无缺。但我看到一个标准代码做同样的事情并使用(unsidned *)而不是(unsigned int *)。那是p是unsigned *p
。
func()
{
unsigned *p;
p = (unsigned *)ioremap(ADDR,8*sizeof(unsigned));
for (i = 0; i <= 7; i++)
pr_err("p[%d] = %d", i, p[i]);
}
我想知道它是否是一个很好的编程习惯(平台无关代码??)。如果是,请说明原因。
答案 0 :(得分:3)
unsigned
和unsigned int
完全没有区别。
因此,unsigned *
和unsigned int *
完全没有区别。
同样,long
是long int
的缩写,int
是signed int
的缩写,等等。彼此之间没有区别。唯一需要注意的例外是普通char
是签名还是无符号是实现定义的,因此它与signed char
不同。
答案 1 :(得分:1)
unsigned
和unsigned int
属于同一类型,指针也是如此。 int是隐含的。