Trong hướng dẫn này, bạn sẽ được giới thiệu về bộ tiền xử lý c và bạn sẽ học cách sử dụng #include, #define và biên dịch có điều kiện với sự trợ giúp của các ví dụ.Hoạt động của C Preprocessor
Bộ tiền xử lý C là bộ tiền xử lý macro (cho phép bạn xác định macro) biến đổi chương trình của bạn trước khi nó được biên dịch. Các biến đổi này có thể là bao gồm tệp tiêu đề, mở rộng macro, v.v.
Tất cả các chỉ thị tiền xử lý đều bắt đầu bằng một #
ký hiệu. Ví dụ,
#define PI 3.14
Một số cách sử dụng phổ biến của bộ tiền xử lý C là:
Bao gồm Tệp Tiêu đề: #include
Bộ #include
tiền xử lý được sử dụng để đưa các tệp tiêu đề vào chương trình C. Ví dụ,
#include <stdio.h>
Đây, stdio.h
là một tệp tiêu đề. Các #include
chỉ thị tiền xử lý thay thế dòng trên với các nội dung của stdio.h
tập tin tiêu đề.
Đó là lý do tại sao bạn cần phải sử dụng #include <stdio.h>
trước khi bạn có thể sử dụng các chức năng như scanf()
và printf()
.
Bạn cũng có thể tạo tệp tiêu đề của riêng mình chứa khai báo hàm và đưa nó vào chương trình của bạn bằng cách sử dụng chỉ thị tiền xử lý này.
#include "my_header.h"
Bạn đã tìm hiểu thêm về cách sử dụng tệp tiêu đề .
Macro sử dụng #define
Macro là một đoạn mã được đặt tên. Bạn có thể xác định một macro trong C bằng cách sử dụng #define
chỉ thị tiền xử lý.
Đây là một ví dụ.
#define c 299792458 // speed of light
Ở đây, khi chúng ta sử dụng c trong chương trình của mình, nó được thay thế bằng 299792458
.
Ví dụ 1: #define bộ tiền xử lý
#include <stdio.h>
#define PI 3.1415
int main()
{
float radius, area;
printf("Enter the radius: ");
scanf("%f", &radius);
// Notice, the use of PI
area = PI*radius*radius;
printf("Area=%.2f",area);
return 0;
}
Chức năng như Macro
Bạn cũng có thể xác định macro hoạt động theo cách tương tự như lệnh gọi hàm. Đây được gọi là macro giống hàm. Ví dụ,
#define circleArea(r) (3.1415*(r)*(r))
Mỗi khi chương trình gặp phải circleArea(argument)
, nó được thay thế bằng (3.1415*(argument)*(argument))
.
Giả sử, chúng ta đã chuyển 5 làm đối số sau đó, nó sẽ mở rộng như bên dưới:
circleArea(5) expands to (3.1415*5*5)
Ví dụ 2: Sử dụng bộ tiền xử lý #define
#include <stdio.h>
#define PI 3.1415
#define circleArea(r) (PI*r*r)
int main() {
float radius, area;
printf("Enter the radius: ");
scanf("%f", &radius);
area = circleArea(radius);
printf("Area = %.2f", area);
return 0;
}
Truy cập trang này để tìm hiểu thêm về macro và #define bộ tiền xử lý .
Biên soạn có điều kiện
Trong lập trình C, bạn có thể hướng dẫn bộ tiền xử lý có bao gồm một khối mã hay không. Để làm như vậy, các chỉ thị có điều kiện có thể được sử dụng.
Nó tương tự như một if
tuyên bố với một điểm khác biệt chính.
Câu if
lệnh được kiểm tra trong thời gian thực thi để kiểm tra xem một khối mã có nên được thực thi hay không trong khi, các điều kiện được sử dụng để bao gồm (hoặc bỏ qua) một khối mã trong chương trình của bạn trước khi thực thi.
Sử dụng có điều kiện
- use different code depending on the machine, operating system
- compile same source file in two different programs
- to exclude certain code from the program but to keep it as reference for future purpose
Làm thế nào để sử dụng điều kiện?
Để sử dụng có điều kiện, #ifdef
, #if
, #defined
, #else
và #elseif
chỉ được sử dụng.
#ifdef Chỉ thị
#ifdef MACRO
// conditional codes
#endif
Ở đây, các mã điều kiện chỉ được đưa vào chương trình khi MACRO được xác định.
#if, #elif và #else Chỉ thị
#if expression
// conditional codes
#endif
Ở đây, biểu thức là một biểu thức kiểu số nguyên (có thể là số nguyên, ký tự, biểu thức số học, macro, v.v.).
Các mã điều kiện chỉ được đưa vào chương trình nếu biểu thức được đánh giá là giá trị khác 0.
#else
Chỉ thị tùy chọn có thể được sử dụng với #if
chỉ thị.
#if expression
conditional codes if expression is non-zero
#else
conditional if expression is 0
#endif
Bạn cũng có thể thêm điều kiện lồng nhau để #if...#else
sử dụng#elif
#if expression
// conditional codes if expression is non-zero
#elif expression1
// conditional codes if expression is non-zero
#elif expression2
// conditional codes if expression is non-zero
#else
// conditional if all expressions are 0
#endif
#defined
Toán tử đặc biệt #defined được sử dụng để kiểm tra xem một macro nhất định có được xác định hay không. Nó thường được sử dụng với chỉ thị #if .
#if defined BUFFER_SIZE && BUFFER_SIZE >= 2048
// codes
Macro được xác định trước
Dưới đây là một số macro được xác định trước trong lập trình C.
Macro | Value |
---|---|
__DATE__ | A string containing the current date |
__FILE__ | A string containing the file name |
__LINE__ | An integer representing the current line number |
__STDC__ | If follows ANSI standard C, then the value is a nonzero integer |
__TIME__ | A string containing the current date. |
Ví dụ 3: Nhận thời gian hiện tại bằng __TIME__
Chương trình sau đây xuất ra thời gian hiện tại bằng cách sử dụng __TIME__
macro.
#include <stdio.h>
int main()
{
printf("Current time: %s",__TIME__);
}
Đầu ra
Current time: 19:54:39