ตามมาตรฐาน C ++ '03 2.3 / 1:
ก่อนที่การประมวลผลอื่น ๆ จะเกิดขึ้นการเกิดขึ้นของหนึ่งในลำดับต่อไปนี้ของอักขระสามตัวต่อไปนี้ ("ลำดับตรีโกณมิติ") จะถูกแทนที่ด้วยอักขระเดี่ยวที่ระบุในตารางที่ 1
---------------------------------------------------------------------------- | trigraph | replacement | trigraph | replacement | trigraph | replacement | ---------------------------------------------------------------------------- | ??= | # | ??( | [ | ??< | { | | ??/ | \ | ??) | ] | ??> | } | | ??’ | ˆ | ??! | | | ??- | ˜ | ----------------------------------------------------------------------------
ในชีวิตจริงนั่นหมายความว่ารหัสprintf( "What??!\n" );
นั้นจะทำให้เกิดการพิมพ์What|
เนื่องจาก??!
เป็นลำดับตรีโกณมิติที่ถูกแทนที่ด้วย|
อักขระ
คำถามของฉันคือจุดประสงค์ของการใช้ Trigraphs คืออะไร? มีประโยชน์ในทางปฏิบัติของการใช้ตรีโกณมิติหรือไม่?
UPD : ในคำตอบถูกกล่าวถึงว่าแป้นพิมพ์ในยุโรปบางตัวไม่มีอักขระเครื่องหมายวรรคตอนทั้งหมดดังนั้นโปรแกรมเมอร์ที่ไม่ใช่ชาวสหรัฐฯจึงต้องใช้ทริกเกอร์ในชีวิตประจำวัน?
UPD2 : Visual Studio 2010 ได้ปิดการสนับสนุนทริกเกอร์โดยค่าเริ่มต้น