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.