C11 では、ポータブルなワイド char 型のサポートがUTF-16 と UTF-32 にそれぞれchar16_t
追加char32_t
されました。
ただし、テクニカル レポートでは、これら 2 つのタイプのエンディアンについては言及されていません。
たとえばgcc-4.8.4
、x86_64 コンピューターで次のスニペットをコンパイルすると、次のようになり-std=c11
ます。
#include <stdio.h>
#include <uchar.h>
char16_t utf16_str[] = u"十六"; // U+5341 U+516D
unsigned char *chars = (unsigned char *) utf16_str;
printf("Bytes: %X %X %X %X\n", chars[0], chars[1], chars[2], chars[3]);
生産します
Bytes: 41 53 6D 51
つまり、リトルエンディアンです。
しかし、この動作はプラットフォーム/実装に依存していますか?それは常にプラットフォームのエンディアンに準拠してchar16_t
いchar32_t
ますか?