Giới thiệu
C Preprocessor là bộ tiền xử lý macro cho C. Xử lý trước khi biên dịch: include file, macro, biên dịch điều kiện, điều khiển dòng. Tất cả bắt đầu bằng #.
Danh sách tiền xử lý phổ biến
| # | Tiền xử lý | Mô tả |
|---|---|---|
| 1 | #include | Chèn file header |
| 2 | #define | Định nghĩa macro/hằng số |
| 3 | #undef | Hủy định nghĩa macro |
| 4 | #if | Kiểm tra điều kiện compile-time (true) |
| 5 | #else | Nhánh thay thế của #if |
| 6 | #ifndef | Kiểm tra macro CHƯA định nghĩa |
| 7 | #elif | Kết hợp #else + #if |
| 8 | #error | Báo lỗi compile tùy chỉnh |
| 9 | #endif | Kết thúc khối điều kiện |
| 10 | #pragma | Chỉ thị cho trình biên dịch |
Ví dụ thực tế
// Header guard
#ifndef MY_HEADER_H
#define MY_HEADER_H
// Macro hằng số
#define PI 3.14159
#define MAX(a,b) ((a)>(b)?(a):(b))
// Biên dịch điều kiện
#if defined(DEBUG)
#define LOG(x) printf(x)
#else
#define LOG(x)
#endif
#endif // MY_HEADER_H
Các macro hữu ích
__FILE__: Tên file hiện tại__LINE__: Số dòng hiện tại__DATE__: Ngày biên dịch__TIME__: Giờ biên dịch__func__: Tên hàm hiện tại (C99)
Lưu ý
- Macro không kiểm tra kiểu → cẩn thận với phép toán (bao ngoặc)
#pragma once thay thế header guard (hỗ trợ rộng rãi)- Tránh lạm dụng macro phức tạp → dùng
inline function (C99)