11

uint8_t誰かがタイプとの違いを説明できます__u8か?

uint8_tstdint.h で定義されており、すべての UNIX システムで利用できることを知っています。

/* Unsigned.  */
typedef unsigned char       uint8_t;
typedef unsigned short int  uint16_t;
...

そして、私がそれらを使用する場合、私が何をしようとしているのかが認識できます.

今、私は__u8and__u16型に出くわしました。私には同じようです。

これらの型のいくつかは linux/types.h で定義されています

#ifdef __CHECKER__
#define __bitwise__ __attribute__((bitwise))
#else
#define __bitwise__
#endif
#ifdef __CHECK_ENDIAN__
#define __bitwise __bitwise__
#else
#define __bitwise
#endif

typedef __u16 __bitwise __le16;
typedef __u16 __bitwise __be16;
typedef __u32 __bitwise __le32;
...

見つかりません__u8でしたが、まだ使用でき、uint8_t のように動作します。

パフォーマンスやメモリ消費に違いはありますか?

手伝ってくれてありがとう :)

4

1 に答える 1

21

uintn_t* C99 ( in <stdint.h>) および C++11 ( in <cstdint>) 標準で指定された typedefです。すべての新しいコンパイラはこれらを提供し、適切な定義はいくつかの古いコンパイラに対して簡単に取得できるため、移植性のために常にこれを使用してください。

__unこれらの標準よりも前の Linux 固有の typedef です。ポータブルではありません。2 つの下線は、非標準の定義を示すために使用されます。

* 8、16、32、および 64 については、コンパイラがそのサイズの型を持っている場合に定義する必要があり、追加のものを定義することができます。

于 2013-04-26T09:07:34.047 に答える