ヘッダー  で定義される型。
mbstate_t
で定義。
size_t
で定義。
char16_t
16ビット文字に使用される符号なし整数型です。
uint_least16_t（で定義）と同じ型です。
char32_t
32ビット文字に使用される符号なし整数型です。
uint_least32_t（で定義）と同じ型です。
これらの関数は、関連するマルチバイト文字列の現在の変換状態を完全に記述することができるオブジェクトを指すmbstate_tへのポインタ型のパラメータ ps を持ち、関数は必要に応じてこのオブジェクトを変更します。 ps が NULL ポインタの場合、各関数は内部の mbstate_t オブジェクトを代わりに使用します。このオブジェクトは、プログラム起動時に初期の変換状態に初期化されます。
この場合、同じ関数の他の呼び出しとのデータ競合を避けるために、関数は必要ありません。
形式
size_t mbrtoc16(char16_t * restrict pc16,
const char * restrict s, size_t n,
mbstate_t * restrict ps);
s がNULLポインタの場合は、次の呼び出しと同じです。
mbrtoc16(NULL, "", 1, ps)
この場合、パラメータ pc16 と n の値は無視されます。
sがヌルポインターでない場合、mbrtoc16関数は、sが指すバイトから最大でnバイトを検査し、次のバイトを完了するために必要なバイト数を決定します。
次のマルチバイト文字（シフトシーケンスを含む）を完成させるために必要なバイト数を決定します。
次のマルチバイト文字が完成したと判断した場合 この関数は、次のマルチバイト文字が完全かつ有効であると判断した場合、対応するワイド文字の値を決定し、pc16がヌルポインタでない場合は、最初の（または唯一の）ワイド文字の値を格納します。そのような文字の最初の（あるいは唯一の）値を、pc16 が指すオブジェクトに格納します。後続の呼び出しでは、すべての文字が格納されるまで、追加の入力を消費せずに次々とワイド文字が格納されます。対応するワイド文字がヌルワイド文字であった場合，結果として得られる状態は，初期変換状態です。
戻値
mbrtoc16 関数は，現在の変換状態を考慮して，以下のうち最初に当てはまるものを返します。
1 以上 n 以下のバイト数。
次の n バイトが不完全な (しかし潜在的に有効な) マルチバイト文字に寄与する場合。
マクロ EILSEQ の値は errno に格納され、変換状態は未定義である。
形式
size_t c16rtomb(char * restrict s, char16_t c16,
mbstate_t * restrict ps);
形式
size_t mbrtoc32(char32_t * restrict pc32,
const char * restrict s, size_t n,
mbstate_t * restrict ps);
形式
size_t c32rtomb(char * restrict s, char32_t c32,
mbstate_t * restrict ps);
あらかじめ定義されたマクロ名のうち、環境マクロ（Environment macros）は、 に関連するので、ここで紹介しますC++ではC++20から、char16_t型のエンコーデょングはUTF-16、char32_t型のエンコーディングはUTF-32はであることが標準規格の一部となりました。。
__STDC_ISO_10646__ 
yyyymmL形式の整数定数（例：199712L）。
このシンボルが定義されている場合、Unicode必須集合（ Unicode required set ）のすべての文字は、wchar_t型のオブジェクトに格納されている場合、その文字の短い識別子と同じ値を持ちます。
Unicode必須集合は、ISO/IEC 10646で定義されているすべての文字は、マクロの値で示された年月におけるすべての修正および技術的コーリゲンダで構成されています。
他のエンコーディングが使用されている場合は、マクロを定義してはならず、実際に使用されるエンコーディングは実装で定義される。
__STDC_MB_MIGHT_NEQ_WC__
整数定数 1 ならば、wchar_t のエンコーディングにおいて、基本文字セットのメンバーが整数文字定数の単独文字として使用されるときに、その値と等しいコード値を持つ必要がないことを示すことを意図しています。
__STDC_UTF_16__ 
整数定数 1 ならは、char16_t型の値がUTF-16でエンコードされていることを示します。他のエンコーディングが使用されている場合は、このマクロを定義してはならず、実際に使用されるエンコーディングは実装で定義されます。
__STDC_UTF_32__
整数定数 1 ならは、char32_t型の値がUTF-32でエンコードされていることを示します。他のエンコーディングが使用されている場合は、このマクロは定義してはならず、実際に使用されるエンコーディングは実装で定義されます。
 は、C Unicode Technical Report ISO/IEC TR 19769:2004が初出で、ISO/IEC 9899:2011(C11)で追加されました。