Macro trong c là gì

Macro là gì?

Marco là 1 trong tên bất kỳ (do xây dựng viên để tên) trỏ cho tới 1 khối lệnh tiến hành một tác dụng nào đó.Trong quy trình tiền up load (pre-processor), các macro được sử dụng trong công tác được thay thế bởi các khối câu lệnh tương ứng.Định nghĩa macro bằng lệnh #define

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ả:


*

Macro tìm giá chỉ trị lớn nhất của 2 số nguyên

Hàm là gì?

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ả:


*

Hàm tìm giá bán trị lớn nhất của 2 số nguyên

Ưu nhược điểm của Macro với Hàm

MacroHà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.
Tùy nằm trong vào tiêu chí thời gian thực thi hay form size chương trình, mà lại lập trình viên quyết định chọn macro giỏi hàm trong lịch trình của mình. Đối cùng với khối chức năng đơn giản ít dòng code, nên thực hiện macro.

Chú ý: khi áp dụng macro để tránh side effect

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: