Ví dụ: có mang macro tính giá trị lớn số 1 của 2 số.Bạn vẫn xem: Macro vào c là gì
#include #include #define MAX(A, B) ((A) > (B) ? (A) : (B))void main( void ) int a = 5, b = 7; float c = 5.6, d = 4.5; printf(" MAX(%d, %d) = %d", a, b, MAX(a, b)); printf(" MAX(%f, %f) = %f", c, d, MAX(c, d)); getch();Kết quả:
Function là 1 trong những khối lệnh triển khai một công dụng nào đó.
Bạn đang xem: Macro trong c là gì
Ví dụ: viết hàm tìm giá chỉ trị lớn nhất 2 số nguyên
#include #include int MAX(int, int);void main( void ) int a = 5, b = 7; printf(" MAX(%d, %d) = %d", a, b, MAX(a, b)); getch();int MAX(int a, int b) return (a > b ? a : b);Kết quả:
Macro | Hàm |
Việc có mang macro cực nhọc hơn quan niệm hàm. | Phải chứng tỏ kiểu dữ liệu của tham số và quý hiếm trả về |
Macro tạo ra các inline code, thời gian up date inline code ngắn lại hơn thời gian call hàm | Chương trình mất time dịch tự vùng nhớ hàm được lưu trữ sang vùng ghi nhớ goi hàm. |
Giả sử macro được gọi 20 lần vào chương trình, trăng tròn dòng code sẽ tiến hành chèn vào chương trình trong quá trình tiền xử lí. Điều này làm cho kích thước của lịch trình (.EXE, .DLL, .LIB,…) phình lớn ra. Xem thêm: Bảng Ngọc Volibear Mùa 8 - Cách Chơi Volibear Mùa 11 | Giả sử 1 hàm được gọi trăng tròn lần, đang chỉ bao gồm 1 bản copy của hàm trong chương trình. Form size chương trình nhỏ hơn áp dụng macro. |
Ví dụ: tạo macro tính bình phương số nguyên
#include #include #define SQUARE(X) (X*X)void main( void ) printf("SQUARE(%d) = %d", 3+5, SQUARE(3+5)); getch();Giải thích:
Kết quả mong muốn sẽ là 8*8 = 64. Nhưng thực tế, kết quả như sau: 3+5*3+5 = 3 + 15 + 5 = 23.
Khi chúng ta định nghĩa macro, phải chăm chú dấu ngoặc. Macro SQUARE được update lại như sau: