ใน 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