Trong C hoặc C ++, chúng tôi đã tìm thấy các dòng khác nhau được nhìn bằng ký hiệu (#). Chúng được gọi là các chỉ thị tiền xử lý. Các dòng này được xử lý trong giai đoạn tiền xử lý trước khi biên dịch mã. Ở đây chúng ta sẽ thấy ba loại chỉ thị tiền xử lý khác nhau. Đây là -
- Tổng hợp có điều kiện
- Kiểm soát dòng
- Chỉ thị về lỗi
Đôi khi chúng tôi xác định một số macro trong chương trình của mình. Sử dụng chỉ thị biên dịch có điều kiện. chúng ta có thể kiểm tra xem macro có được xác định hay không. Chúng tôi cũng có thể kiểm soát chúng. Vì vậy, nếu một macro được xác định, thì hãy thực hiện một số tác vụ, nếu không hãy thực hiện một số tác vụ khác như vậy.
Các chỉ thị biên dịch có điều kiện giống như # ifdef- # elif- # else- # endif. Mọi khối #ifdef phải được kết thúc bằng #endif. #Elif hoặc #else là tùy chọn.
Ví dụ
#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 }
Đầu ra
MY_MACRO is defined, value is: 10
Chỉ thị điều khiển dòng được sử dụng bằng cách gõ #line. Đôi khi chúng tôi gặp một số lỗi với số dòng ưu tiên. Chúng tôi có thể cập nhật số dòng bằng cách sử dụng chỉ thị này. Nếu chúng ta đặt giá trị này và thay đổi dòng hiện tại là 200, thì sau đó các dòng sẽ chuyển từ 201 trở đi.
Ví dụ
#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; }
Đầu ra
Current line is: 5 Hello World Current line is: 202
Chỉ thị lỗi được sử dụng để hiển thị lỗi trước khi biên dịch. Giả sử một macro nên được xác định nhưng nếu điều đó không được xác định, chúng ta có thể hiển thị thông báo lỗi. Điều này có thể được thực hiện bằng cách sử dụng #error.
Ví dụ
#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 }
Đầu ra
#error MY_MACRO should be defined