ในส่วนนี้เราจะดูว่าตัวดำเนินการ Stringize (#) และตัวดำเนินการ Token Paste (##) คืออะไรใน C. ตัวดำเนินการ Stringize คือตัวดำเนินการตัวประมวลผลล่วงหน้า มันส่งคำสั่งไปยังคอมไพเลอร์เพื่อแปลงโทเค็นเป็นสตริง เราใช้ตัวดำเนินการนี้ที่คำจำกัดความของมาโคร
การใช้ตัวดำเนินการ stringize เราสามารถแปลงข้อความบางส่วนเป็นสตริงได้โดยไม่ต้องใช้เครื่องหมายอัญประกาศ
ตัวอย่าง
#include<stdio.h>
#define STR_PRINT(x) #x
main() {
printf(STR_PRINT(This is a string without double quotes));
} ผลลัพธ์
This is a string without double quotes
โอเปอเรเตอร์การวางโทเค็นคือโอเปอเรเตอร์ตัวประมวลผลล่วงหน้า มันส่งคำสั่งไปยังคอมไพเลอร์เพื่อเพิ่มหรือเชื่อมสองโทเค็นเป็นสตริงเดียว เราใช้ตัวดำเนินการนี้ที่คำจำกัดความของมาโคร
ตัวอย่าง
#include<stdio.h>
#define STR_CONCAT(x, y) x##y
main() {
printf("%d", STR_CONCAT(20, 50));
} ผลลัพธ์
2050