ใน C หรือ C ++ เราพบบรรทัดต่าง ๆ ที่มีสัญลักษณ์ (#) สิ่งเหล่านี้เรียกว่าคำสั่งก่อนการประมวลผล บรรทัดเหล่านี้ได้รับการประมวลผลในขั้นตอนก่อนการประมวลผลก่อนที่จะคอมไพล์โค้ด ที่นี่เราจะเห็นคำสั่งก่อนการประมวลผลสามประเภทที่แตกต่างกัน เหล่านี้คือ −
- การรวบรวมแบบมีเงื่อนไข
- การควบคุมสาย
- คำสั่งข้อผิดพลาด
บางครั้งเรากำหนดมาโครบางตัวในโปรแกรมของเรา การใช้คำสั่งการคอมไพล์แบบมีเงื่อนไข เราสามารถตรวจสอบว่ามีการกำหนดมาโครหรือไม่ เรายังควบคุมพวกมันได้ ดังนั้นหากมีการกำหนดมาโครหนึ่งไว้ ให้ทำงานบางอย่าง ไม่เช่นนั้น ให้ทำอย่างอื่นเช่นนั้น
คำสั่งการคอมไพล์แบบมีเงื่อนไขเป็นเหมือน #ifdef-#elif-#else-#endif ทุกบล็อก #ifdef ต้องลงท้ายด้วย #endif #elif หรือ #else เป็นตัวเลือก
ตัวอย่าง
#include <iostream> #define MY_MACRO 10 using namespace std; int main() { #ifdef MACRO cout << "MACRO is defined" << endl; #elif MY_MACRO cout << "MY_MACRO is defined, value is: " << MY_MACRO; #endif }
ผลลัพธ์
MY_MACRO is defined, value is: 10
ใช้คำสั่งควบคุมบรรทัดโดยพิมพ์ #line บางครั้งเราได้รับข้อผิดพลาดเกี่ยวกับหมายเลขบรรทัดที่ต้องการ เราสามารถอัปเดตหมายเลขบรรทัดโดยใช้คำสั่งนี้ หากเราวางสิ่งนี้และเปลี่ยนบรรทัดปัจจุบันเป็น 200 จากนั้นเส้นจะย้ายจาก 201 เป็นต้นไป
ตัวอย่าง
#include <iostream> using namespace std; int main() { cout<< "Current line is: " << __LINE__ << endl; #line 200 cout << "Hello" << endl; cout << "World" << endl; cout<< "Current line is: " << __LINE__ << endl; }
ผลลัพธ์
Current line is: 5 Hello World Current line is: 202
คำสั่งข้อผิดพลาดใช้เพื่อแสดงข้อผิดพลาดก่อนการคอมไพล์ สมมติว่าควรกำหนดมาโครหนึ่งรายการ แต่ถ้าไม่ได้กำหนดไว้ เราสามารถแสดงข้อความแสดงข้อผิดพลาดได้ สามารถทำได้โดยใช้ #error.
ตัวอย่าง
#include <iostream> using namespace std; int main() { #ifdef MY_MACRO cout << "MY_MACRO is defined, value is: " << MY_MACRO; #else #error MY_MACRO should be defined #endif }
ผลลัพธ์
#error MY_MACRO should be defined