View Single Post
Old 01-10-2007, 12:09 PM   #2
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Để tiện việc quản lý code người ta chia code thành nhiều module nhỏ. Compiler sẽ dịch các module này thành file đối tượng (.o hoặc .obj). Linker sẽ liên kết các file đối tượng thành file thực thi (với PIC là .hex). Đây là nguyên tắc cơ bản khi biên dịch code, nhưng bây giờ các IDE quá phổ biến, nên thật ra ít người hiểu được điều này.

Với C18, bạn #include "isr.c" đồng thời add cả nó vào project của bạn thì sẽ bị báo lỗi.

Tốt nhất bạn chỉ add "isr.c" vào project thôi, module này sẽ được dịch và liên kết với "main.c" của bạn. Nếu biến state đã đc khai báo ở trong isr.c (vì isr.c include isr.h) thì trong tất cả các module khác nếu cần sử dụng biến này, bạn phải khai báo extern (external). Chỉ thị extern báo cho compiler biết biến đó được khai báo ở trong file đối tượng khác, nó chỉ cần dịch, còn linker sẽ lo việc phân phối bộ nhớ.
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn