2

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

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

4

2 回答 2

3

unsigned并且unsigned int完全没有区别。

因此,unsigned *unsigned int *没有任何区别。


同样,longis short for long int, intis short forsigned int等。两者之间没有区别。唯一需要注意的例外是,plainchar是有符号还是无符号是实现定义的,所以它与signed char.

于 2013-10-30T02:26:44.297 回答
1

unsigned并且unsigned int是相同的类型,指向它们的指针也是相同的类型。int 是隐式的。

于 2013-10-30T02:26:51.677 回答