(unsigned *)比解析内存更好(unsigned int *)?

时间:2013-10-30 02:24:08

标签: c linux linux-device-driver

我理解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]);
}

我想知道它是否是一个很好的编程习惯(平台无关代码??)。如果是,请说明原因。

2 个答案:

答案 0 :(得分:3)

unsignedunsigned int完全没有区别。

因此,unsigned *unsigned int *完全没有区别。


同样,longlong int的缩写,intsigned int的缩写,等等。彼此之间没有区别。唯一需要注意的例外是普通char是签名还是无符号是实现定义的,因此它与signed char不同。

答案 1 :(得分:1)

unsignedunsigned int属于同一类型,指针也是如此。 int是隐含的。