#define

Giới thiệu

#define là một đối tượng của ngôn ngữ C/C++ cho phép bạn đặt tên cho một hằng số nguyên hay hằng số thực. Trước khi biên dịch, trình biên dịch sẽ thay thế những tên hằng bạn đang sử dụng bằng chính giá trị của chúng. Quá trình thay thế này được gọi là quá trình tiền biên dịch (pre-compile).

Cú pháp

#define [tên hằng] [giá trị của hằng]

Ví dụ

#define pi 3.14

Nếu bạn viết code thế này ...

#define pi 3.14
float a = pi * 2.0;  //    pi = 6.28

thì sau khi pre-compile trước khi biên dịch, chương trình của bạn sẽ như thế này:

#define pi 3.14
float a = 3.14 * 2.0;  //   a = 6.28

Chú ý

Nếu một biến có tên trùng với tên hằng số được khai báo bằng #define thì khi pre-comile, cái biến ấy sẽ bị thay thế bằng giá trị của hằng số kia. Hệ quả tất yếu là khi biên dịch, chương trình của bạn sẽ bị lỗi cú pháp (bạn sẽ không dễ dàng nhận ra điều này). Đôi khi nó cũng dẫn đến lỗi logic - một lỗi rất khó sửa !

Nếu bạn viết thế này...

#define pi 3.14
float pi = 3.141592654;

thì sau khi pre-compile trước khi biên dịch, bạn sẽ được thế này:

#define pi 3.14
float 3.14 = 3.141592654;     //   lỗi cú pháp

Vì vậy, bạn nên hạn chế tối đa việc sử dụng #define để khai báo hằng số khi không cần thiết. Bạn có thể sử dụng cách khai báo sau để thay thế:

const float pi = 3.14;

 

Reference Tags: 
lên
13 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Giới thiệu về Phòng thí nghiệm bỏ túi PSLab

Vừa rồi giữa tháng 10 mình có đi dự Open Tech Summit do FOSSASIA tổ chức với vai trò là Workstop Facilitator thì có quen được vài anh chị trong ban tổ chức và được tặng một mạch PSLab về vọc chơi. Mình nghĩ board mạch này khá phù hợp cho các bạn maker bởi nó có rất nhiều chức năng mà trước giờ mình chưa bao giờ nghĩ là sẽ có thể sở hữu được một cái thứ gì có thể làm được như vậy ngay trong phòng của mình. Giá bán của nó tại sự kiện theo mình nhớ không nhầm là 1.200.000đ tương đương một con Raspberry Pi đời mới.

lên
4 thành viên đã đánh giá bài viết này hữu ích.

Bài 6: Sử dụng Terminal trên Intel Galileo

Điều làm nên sự độc đáo của Intel Galileo đó có cả một hệ điều hành Linux chạy ngầm trong hệ thống, trong khi Galileo lại có thể hoạt động như một mạch Arduino thông thường. Bạn có thể tương tác với hệ điều hành này thông qua Terminal, chạy các câu lệnh qua giao diện dòng lệnh kiểu như MS-DOS. So sánh với việc tải các chương trình Arduino lên bo mạch, việc giap tiếp qua giao diện dòng lệnh là một công việc đòi hỏi nhiều kiến thức và kĩ năng hơn, tuy nhiên nó lại là một nơi tốt để bạn khởi đầu và có thể nhanh chóng tiến bộ hơn.

lên
2 thành viên đã đánh giá bài viết này hữu ích.