コンパイラ エラー C3850
'char': ユニバーサル文字名が正しくない文字を指定しています
解説
ユニバーサル文字名として表す文字は、0 ~ 10FFFF の範囲の有効な Unicode コード ポイントを表す必要があります。 ユニバーサル文字名に、D800 ~ DFFF の Unicode サロゲート範囲内の値またはエンコードされたサロゲート ペアを含めてはいけません。 コンパイラは、有効なコード ポイントから自動的にサロゲート ペアを生成します。
C としてコンパイルされたコードでは、0024 ('$')、0040 ('@')、および 0060 ('`') を除き、0000 ~ 009F の範囲内 (境界を含む) の文字を表すユニバーサル文字名を使用してはいけません。
C++ としてコンパイルされたコードでは、文字列または文字リテラル内に、有効な Unicode コード ポイントのユニバーサル文字名を使用できます。 リテラルを除き、0000 ~ 001F または 007F ~ 009F の範囲内 (境界を含む) の制御文字、あるいは、基本ソース文字セットのメンバーを表すユニバーサル文字名を使用してはいけません。 詳細については、「 Character Sets」を参照してください。
例
次の例では、C3850 を発生させ、その修正方法を示しています。
// C3850.cpp
int main() {
int \u0019 = 0; // C3850, not in allowed range for an identifier
const wchar_t * wstr_bad = L"\UD840DC8A"; // C3850, UCN is surrogate pair
const wchar_t * wstr_good = L"\U0002008A"; // Okay, UCN is valid code point
}