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

これは完全に機能します。しかし、同じことを行い、(unsigned int *) の代わりに (unsidned *) を使用している標準コードが表示されます。つまり、 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

unsignedunsigned int全く違いがありません。

したがって、unsigned *unsigned int *はまったく違いはありません。


同様に、longは の略long intintは の略signed int、などです。どちらにも違いはありません。注意すべき唯一の例外は、plaincharが署名されているか署名されていないかは実装定義であるため、 と同じではないということsigned charです。

于 2013-10-30T02:26:44.297 に答える
1

unsignedunsigned intは同じ型であり、それらへのポインタも同じです。int は暗黙的です。

于 2013-10-30T02:26:51.677 に答える