เหตุผลที่ไม่ควร
ประการแรกนี่คือเหตุผลที่ไม่เขียนขีดล่างหรือใช้เคล็ดลับใด ๆ ในการจำลองมันทำให้ค่าคงที่ยากต่อการค้นหาในรหัส สมมติว่ามีบางโปรแกรมจัดแสดงบางส่วนในการดำเนินงานของมูลค่า 1,500,000 รหัสยากสำหรับพารามิเตอร์บางอย่าง ฉันต้องการที่จะรู้ว่าสิ่งที่เกิดขึ้นในซอร์สโค้ดของโปรแกรมนั้นจริงดังนั้นฉันจึง grep รหัสสำหรับ1500000
และหาอะไร ทำไม? อาจเป็นเลขฐานสิบหก (แต่ทำไมตัวเลขทศนิยมกลมเช่นนี้) 1_500_000
ถิ่นที่ฉันคงถูกเขียนเป็นจริง ผมจำเป็นต้อง 1_?500_?000
regex
แนะนำตัวละครในความคิดเห็น
เพียงเพราะ Visual Aid ประเภทหนึ่งไม่พร้อมใช้งานหรือเราไม่ต้องการใช้ด้วยเหตุผลดังกล่าวข้างต้นไม่ได้หมายความว่าเราไม่สามารถใช้ประโยชน์จากไฟล์ข้อความสองมิติเพื่อสร้างเครื่องช่วยมองเห็นทางเลือก:
foo = bar / 1000000000;
// --^--^--^
ด้วยวิธีนี้เราสามารถโน้มน้าวตัวเองได้อย่างง่ายดายว่ามีสามกลุ่มสามศูนย์ ถึงกระนั้นเรายังสามารถ grep ซอร์สโค้ด1000000000
และค้นหาได้
การระบายสีไวยากรณ์
เท็กซ์เอดิเตอร์พร้อมการกำหนดสีไวยากรณ์ที่สามารถตั้งโปรแกรมสามารถทำกับกลุ่มสีหลักในค่าคงที่ตัวเลขที่มีสีสลับเพื่อให้อ่านง่ายขึ้น เราไม่ต้องทำอะไรในรหัส
การประมวลผลล่วงหน้า: C, C ++, Objective C
ตอนนี้ถ้าเราต้องการเครื่องหมายจุลภาคระหว่างตัวเลขใน C และ C ++ เราสามารถใช้การประมวลผลล่วงหน้า:
/* Four digit base TH-ousand constant macro */
/* Condensed using Horner's rule */
#define TH(A,B,C,D) ((((((A) * 1000) + (B)) * 1000) + (C)) * 1000 + D)
tv_sec = nanoseconds / TH(1,000,000,000)
TH(1,234,567,890)
การทำงานสำหรับตัวเลขเช่น
แมโครที่คล้ายกับ TH สามารถทำงานกับการวางโทเค็นได้มากกว่าการคำนวณ ในตัวประมวลผลล่วงหน้า C ตัว##
ดำเนินการไบนารี("โทเค็นแปะ") สามารถใช้ในเนื้อความมาโครเพื่อวางตัวถูกดำเนินการสองตัวเข้าด้วยกันในโทเค็นเดียว ตัวถูกดำเนินการหนึ่งหรือทั้งคู่สามารถเป็นอาร์กิวเมนต์ของแมโครได้ ข้อเสียที่นี่ (สร้างความเสี่ยงสำหรับเรา) คือหากการทำให้เกิดผลไม่ได้เป็นโทเค็นที่ถูกต้องพฤติกรรมจะไม่ได้กำหนด
#define TOK4(A, B, C, D) A ## B ## C ## D
ตอนนี้
TOK4(1,000,000,000) /* produces the single token 1000000000 */
TOK4(1,123,000,000.0E+2) /* produces the single token 1123000000.0E+2 */
TOK4(pr,in,t,f) /* produces the token printf */
TOK4(#,*,a,b) /* undefined behavior, #*ab is not valid token syntax */
โปรแกรม C ที่วางตัวระบุร่วมกันและใช้ผลลัพธ์เพื่อตั้งชื่อตัวแปรส่วนกลางและฟังก์ชันที่มีอยู่และน่ากลัวที่จะทำงานด้วยเพราะไม่สามารถใช้เครื่องมือเช่น GNU id-utils และ ctags