ในส่วนนี้เราจะดูว่าตัวดำเนินการ 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