Bộ tiền xử lý là các chỉ thị, cung cấp hướng dẫn cho trình biên dịch để xử lý trước thông tin trước khi quá trình biên dịch thực sự bắt đầu.
pTất cả các chỉ thị tiền xử lý bắt đầu bằng # và chỉ các ký tự khoảng trắng mới có thể xuất hiện trước một chỉ thị tiền xử lý trên một dòng. Các chỉ thị tiền xử lý không phải là câu lệnh C ++, vì vậy chúng không kết thúc bằng dấu chấm phẩy (;).
Bạn đã thấy lệnh #include trong tất cả các ví dụ. Macro này được sử dụng để đưa tệp tiêu đề vào tệp nguồn.
Có một số lệnh tiền xử lý được C ++ hỗ trợ như #include, #define, #if, #else, #line, v.v. Hãy để chúng tôi xem các lệnh quan trọng -
Bộ tiền xử lý #define
Chỉ thị tiền xử lý #define tạo các hằng số tượng trưng. Hằng số tượng trưng được gọi là macro và hình thức chung của chỉ thị là -
#define macro-name replacement-text
Mã mẫu
#include <iostream> using namespace std; #define PI 3.14159 int main () { cout << "Value of PI :" << PI << endl; return 0; }
Đầu ra
Value of PI :3.14159
Tổng hợp có điều kiện
Có một số chỉ thị, có thể được sử dụng để biên dịch các phần chọn lọc của mã nguồn chương trình của bạn. Quá trình này được gọi là quá trình biên dịch có điều kiện.
Cấu trúc tiền xử lý có điều kiện giống cấu trúc lựa chọn ‘if’. Xem xét mã tiền xử lý sau -
#ifndef NULL #define NULL 0 #endif
Bạn có thể biên dịch một chương trình cho mục đích gỡ lỗi. Bạn cũng có thể bật hoặc tắt gỡ lỗi bằng một macro như sau -
#ifdef DEBUG cerr <<"Variable x = " << x << endl; #endif
Điều này làm cho câu lệnh chứng nhận được biên dịch trong chương trình nếu hằng số tượng trưng DEBUG đã được xác định trước chỉ thị #ifdef DEBUG. Bạn có thể sử dụng câu lệnh #if 0 để nhận xét một phần của chương trình như sau -
#if 0 code prevented from compiling #endif
Mã mẫu
#include <iostream> using namespace std; #define DEBUG #define MIN(a,b) (((a)<(b)) ? a : b) int main () { int i, j; i = 100; j = 30; #ifdef DEBUG cerr <<"Trace: Inside main function" << endl; #endif #if 0 /* This is commented part */ cout << MKSTR(HELLO C++) << endl; #endif cout <<"The minimum is " << MIN(i, j) << endl; #ifdef DEBUG cerr <<"Trace: Coming out of main function" << endl; #endif return 0; }
Đầu ra
Trace: Inside main function The minimum is 30 Trace: Coming out of main function