Computer >> Máy Tính >  >> Lập trình >> C ++

Cách hoạt động của Bộ tiền xử lý trong C / C ++?

Ở đây chúng ta sẽ xem các bộ tiền xử lý đang hoạt động như thế nào trong C hoặc C ++. Hãy để chúng tôi xem bộ tiền xử lý là gì.

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.

Tấ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 #include chỉ thị 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à dạng chung của chỉ thị là -

#define macro-name replacement-text

Ví dụ

#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ố lệnh 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à 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 trạng thái #if 0 để nhận xét về một phần của chương trình như sau -

#if 0
code prevented from compiling
#endif

Ví dụ

#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