PEMBARUAN - jawaban ini, meskipun tampaknya masuk akal bagi saya dan orang lain, ternyata sebagian besar salah (dan cukup salah mengenai maksudnya, sehingga secara efektif hanya salah). Karena (seperti yang ditunjukkan dalam komentar oleh Programmer) itu tidak diizinkan untuk menggunakan UCS di luar konstanta string ketika karakter yang sama dapat direpresentasikan secara normal dalam set karakter dasar. Jadi, jangan menggunakannya untuk menghindari kata kunci, seperti dalam contoh saya; dan tidak menggunakannya untuk membuat 'pengidentifikasi' seperti 23skiddo
dengan melarikan diri2
. Itu masih bisa digunakan untuk membuat nama yang kompatibel dengan bahasa eksternal, saya kira, tetapi hanya, tampaknya, ketika nama-nama itu dimulai dengan huruf atau karakter yang diperluas, dan hanya berisi huruf, digit, garis bawah, dan karakter yang diperluas - yang tampaknya terlalu membatasi untuk mendukung maksud itu dengan benar. Jadi harus maksud utamanya adalah (seperti dalam jawaban Pemrogram) untuk memungkinkan karakter tambahan ini dalam pengidentifikasi, dan untuk mengaktifkan editor sumber di mana karakter ini ditampilkan secara grafis, sementara masih memungkinkan file sumber berada di ASCII polos.
Program C ++ dapat memanggil fungsi yang ditulis dalam bahasa lain. Ini adalah strategi yang baik pada bagian komite standardisasi untuk memastikan bahwa C ++ akan dapat dioperasikan dengan bahasa lain yang memungkinkan karakter non-alfanumerik atau unicode dalam nama fungsi, bahkan jika bahasa tersebut belum ada. Standar tidak perlu menentukan bagaimana ini akan bekerja di tingkat tautan, dll; tapi ada baiknya memiliki mekanisme yang ditentukan untuk memungkinkannya.
Anda tidak perlu melihat masa depan untuk melihat manfaatnya. Misalkan saya memiliki perpustakaan C lama dengan fungsi di dalamnya yang disebut catch
(atau dilindungi, atau bisa berubah) ... dan saya ingin memanggilnya dari C ++. Dan untuk alasan apa pun saya tidak bisa atau tidak ingin memodifikasi kode C (Omong-omong, saya sudah lebih dari satu kali harus berurusan dengan kode C lama yang menggunakan nama fungsi yang telah menjadi kata kunci C ++ ...)
Dengan nama UC saya bisa menulis ini di header, dan kemudian panggil saja 'catch_func ()':
extern "C" {
int catc\u0068( int a, int b ); // C 'catch()' function
}
inline int catch_func( int a, int b ) { return catc\u0068(a,b); }
Tentu itu jelek, tapi itu tidak masalah karena hanya di satu tempat di header. Pendekatan yang sama dapat digunakan untuk membuat bertopik untuk memanggil fungsi dalam bahasa lain, dan berfungsi meskipun namanya C ++ kata kunci atau unicode, atau memiliki spasi, .
atau tanda baca lain yang tertanam di dalamnya
Berbagai bahasa lain memiliki perangkat yang memungkinkan pembuatan pengidentifikasi yang tidak mengikuti pola umum; misalnya di Verilog, \abcd
adalah pengidentifikasi yang setara dengan abcd
, tetapi \while
dan \23skidoo
dan \44.e2
juga pengidentifikasi, yang memerlukan awalan backslash untuk dilihat. Karena cara Verilog digunakan, penting untuk mengizinkan nama apa pun, di mana mereka berhubungan dengan antarmuka eksternal.
Hal ini memungkinkan sistem yang memungkinkan karakter unicode dalam pengidentifikasi untuk mengekspor sumber dalam format yang dapat dikompilasi pada setiap kompiler penyesuai standar. Yaitu itu adalah cara untuk menyandikan unicode pada set karakter dasar (kurang lebih seperti dikutip-cetak dapat digunakan untuk email, sistem yang tahu lebih baik mampu melakukan pekerjaan yang lebih baik, sistem lain masih bekerja).
sumber
Seseorang mungkin ingin membuat pengidentifikasi menggunakan karakter bahasa asing yang tidak dapat dimasukkan pada keyboard atau perangkat input. Atau, pengidentifikasi dapat berisi karakter yang tidak dapat dicetak menggunakan font atau kemampuan output perangkat tetapi IDE ingin menunjukkan representasi yang akurat.
sumber
C ++ mengharuskan karakter diperluas aktual yang muncul secara harfiah dalam sumber berperilaku identik dengan Nama Karakter Universal. Mengizinkan Nama Karakter Universal dalam pengidentifikasi memungkinkan pemrogram untuk menggunakan karakter yang diperluas dalam pengidentifikasi.
sumber