Macro là gì?

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

Ví dụ: tư tưởng macro tính giá bán trị lớn số 1 của 2 số.Bạn sẽ xem: Macro trong 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á bán trị lớn số 1 của 2 số nguyên

Hàm là gì?

Function là một trong khối lệnh tiến hành 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á trị lớn số 1 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 số 1 của 2 số nguyên

Ưu yếu điểm của Macro với Hàm

MacroHàm
Việc định nghĩa macro nặng nề hơn khái niệm hàm.Phải chỉ rõ kiểu dữ liệu của tham số và cực hiếm trả về
Macro tạo thành các inline code, thời gian up date inline code ngắn hơn thời gian điện thoại tư vấn hàm Chương trình mất time dịch tự vùng nhớ hàm được tàng trữ sang vùng ghi nhớ goi hàm.
Giả sử macro được gọi đôi mươi lần trong chương trình, đôi mươi dòng code sẽ tiến hành chèn vào chương trình trong quy trình tiền xử lí. Điều này làm cho kích cỡ của chương trình (.EXE, .DLL, .LIB,…) phình to ra.

Xem thêm: Khu Phi Thuế Quan Là Gì - Các Khu Phi Thuế Quan Tại Việt Nam

Giả sử 1 hàm được gọi đôi mươi lần, đang chỉ gồm 1 bản copy của hàm vào chương trình. Kích thước chương trình bé dại hơn áp dụng macro.
Tùy trực thuộc vào tiêu chí thời hạn thực thi hay kích cỡ chương trình, mà lại lập trình viên ra quyết định chọn macro tuyệt hàm trong lịch trình của mình. Đối với khối chức năng đơn giản ít loại code, nên áp dụng macro.

Chú ý: khi thực hiện macro nhằm tránh side effect

Ví dụ: chế 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ả ước muốn sẽ là 8*8 = 64. Cơ mà thực tế, tác dụng như sau: 3+5*3+5 = 3 + 15 + 5 = 23.

Khi chúng ta định nghĩa macro, phải để ý dấu ngoặc. Macro SQUARE được update lại như sau: