#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
10 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ả

[Intel Galileo] Cài đặt Linux Yocto (iot-devkit) lên Intel Galileo

Để hỗ trợ cho nền tảng Galileo của mình, Intel đã cho ra mắt bộ Intel IoT Developer Kit (iot-devkit) bao gồm cả haware (các linh kiện giống như trên nền tảng Arduino) và software (OS, IDE, các tool phát triển,...). Trong bài viết này, mình sẽ hướng dẫn các bạn cài Linux Yocto - là một hệ điều hành thuộc nhánh Software trong iot-devkit.

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

Mạch cầu H và điều khiển động cơ với SN754410

Trong bài viết này, mình sẽ giới thiệu đến các bạn mạch cầu H để ứng dụng trong việc điều khiển cùng lúc 2 động cơ DC theo 2 chiều quay bất kì. Bên cạnh đó, mình cũng sẽ giới thiệu đến các bạn IC SN754410 tích hợp sẵn một mạch cầu H, giúp bạn thao tác thuận tiện, không phải tốn công làm mạch điều khiển động cơ.

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