UPDATE - คำตอบนี้แม้ว่าฉันและคนอื่น ๆ จะดูเหมือนว่าเหมาะสมสำหรับฉัน แต่กลับกลายเป็นว่าผิดส่วนใหญ่ (และผิดพอสมควรเกี่ยวกับจุดประสงค์ เนื่องจาก (ตามที่ระบุไว้ในความคิดเห็นโดย AProgrammer) จึงไม่ได้รับอนุญาตให้ใช้ UCS นอกค่าคงที่สตริงเมื่ออักขระเดียวกันสามารถแสดงได้ตามปกติในชุดอักขระพื้นฐาน ดังนั้นอย่าใช้เพื่อหลีกเลี่ยงคำหลักดังในตัวอย่างของฉัน และไม่ใช้มันเพื่อสร้าง 'ตัวระบุ' 23skiddo
โดยการหลีกเลี่ยง2
. มันยังคงสามารถใช้เพื่อทำให้ชื่อที่เข้ากันได้กับภาษาภายนอกฉันเดา แต่ดูเหมือนว่าเมื่อชื่อเหล่านั้นเริ่มต้นด้วยตัวอักษรหรืออักขระขยายและมีเพียงตัวอักษรตัวเลขขีดเส้นใต้และอักขระขยาย - ซึ่ง ดูเหมือนจะเข้มงวดเกินไปที่จะสนับสนุนความตั้งใจนั้น ดังนั้นจะต้องมีจุดประสงค์หลักคือ (เช่นเดียวกับในคำตอบของ AProgrammer) เพื่ออนุญาตให้ใช้อักขระพิเศษเหล่านี้ในตัวระบุและเพื่อเปิดใช้งานเครื่องมือแก้ไขแหล่งที่ซึ่งอักขระเหล่านี้จะแสดงเป็นกราฟิกในขณะที่ยังอนุญาตให้ไฟล์ต้นฉบับอยู่ใน ASCII ธรรมดา
โปรแกรม C ++ อาจเรียกฟังก์ชันที่เขียนด้วยภาษาอื่น เป็นกลยุทธ์ที่ดีในส่วนของคณะกรรมการมาตรฐานเพื่อให้แน่ใจว่า C ++ จะทำงานร่วมกับภาษาอื่นซึ่งอาจอนุญาตให้มีอักขระที่ไม่ใช่ตัวอักษรหรืออักขระ unicode ในชื่อฟังก์ชันแม้ว่าภาษาดังกล่าวยังไม่มีอยู่ก็ตาม มาตรฐานไม่จำเป็นต้องระบุวิธีการทำงานในระดับตัวเชื่อมโยง ฯลฯ แต่มันก็ดีที่มีกลไกที่ระบุไว้ในที่ที่อนุญาต
คุณไม่จำเป็นต้องมองเข้าไปในอนาคตเพื่อดูการใช้งานนี้ สมมติว่าฉันมีห้องสมุด C เก่าที่มีฟังก์ชั่นอยู่ในนั้นเรียกว่าcatch
(หรือป้องกันหรือเปลี่ยนแปลงได้) ... และฉันต้องการเรียกมันจาก C ++ และด้วยเหตุผลใดก็ตามที่ฉันไม่สามารถหรือไม่ต้องการแก้ไขรหัส C (โดยวิธีฉันมีมากกว่าหนึ่งครั้งต้องจัดการกับรหัส C เก่าที่ใช้ชื่อฟังก์ชั่นที่กลายเป็นคำหลัก C ++ ... )
ด้วยชื่อ UC ฉันสามารถเขียนหัวข้อนี้ได้แล้วเรียก '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); }
แน่นอนว่ามันน่าเกลียด แต่ก็ไม่สำคัญเพราะมันอยู่ในที่เดียวในส่วนหัว วิธีการเดียวกันนี้สามารถใช้ในการสร้างสตับเพื่อเรียกใช้ฟังก์ชันในภาษาอื่นและใช้งานได้แม้ว่าชื่อจะเป็นคำหลัก C ++ หรือยูนิโคดหรือมีช่องว่าง.
หรือมีเครื่องหมายวรรคตอนอื่นฝังอยู่
ภาษาอื่น ๆ อีกมากมายมีอุปกรณ์ที่อนุญาตให้สร้างตัวระบุที่ไม่เป็นไปตามรูปแบบทั่วไป เช่นใน Verilog \abcd
เป็นตัวบ่งชี้ที่เทียบเท่ากับabcd
แต่\while
และ\23skidoo
และ\44.e2
เป็นตัวระบุด้วยซึ่งต้องการคำนำหน้าแบ็กสแลชที่จะเห็นเช่นนี้ เนื่องจากวิธีการที่ใช้ Verilog จึงเป็นสิ่งสำคัญที่จะอนุญาตชื่อใด ๆ ที่เกี่ยวข้องกับอินเทอร์เฟซภายนอก