Trước khi bắt đầu hãy chắc chắn bạn đã hiểu rõ về ý nghĩa của việc chia source code thành nhiều file.
Bạn có thể tham khảo tại: Ý nghĩa của việc tổ chức source file
Hãy
cùng xem xét một bài toán cụ thể thấy rõ hơn cách chia source file mà tôi muốn chia sẽ, Đề bài “Viết một chương trình nhập một giá trị nguyên từ bàn phím, nếu
nhập số chẵn in ra màu xanh, nếu nhập số lẽ in ra màu đỏ”
Hình
1: Source file main.c khi chưa chia
Chúng ta hoàn toàn có thể để tổ chức một source code
như thế này, nhưng để tăng tốc độ compiler và tạo thành thói quen tốt khi tham gia những project lớn tôi khuyến khích bạn tách source ra thành
nhiều phần với cấu trúc như sau:
Đầu
tiên, tất cả các hàm được sử dụng sẽ được khai
báo trong một file riêng ngoại trừ hàm main(). Tôi đặt tên file này là
declaration.h, loại file này gọi là header file[1].
Hình
2: Header file declaration.h
Tiếp
theo, định nghĩa tất cả các hàm bạn
vừa khai báo trong header file, các hàm đó sẽ được định nghĩa trong một file
riêng gọi là source file[2], tôi đặt tên là declaration.c.
Hình
3: Source file definition.c
Cuối
cùng là thay đổi file main.c cho phù hợp, phải xóa hết các khai báo và định
nghĩa hàm, sau đó #include header file mới tạo, kết quả như sau:
Hình
4: source file main.c sau khi chia.
Như vậy từ source chỉ có 1 file main.c bây giờ đã được tổ chức thành 3 file main.c, delaration.h và definition.c, source code được tổ chức theo cách mới sẽ khoa học hơn, hiệu quả hơn và dễ làm việc hơn. ^^ Các bạn nhớ subcribe ý kiến cá nhân ở phía dưới nhé :-P
Ở
đây tôi muốn các bạn chú ý đến ba điểm quan trọng:
- Sự khác nhau giữ #include <stdio.h> và #include “declaration.h”: Khi muốn #include một file header trong thư viện của compiler thì bạn dùng giấu <tên_file>. Khi muốn #include một header file do chính bạn viết thì bạn dùng giấu “tên_file”.
- Tôi in đậm định nghĩa và khai báo vì tôi muốn bạn phân biệt rõ ràng hai khái niệm này:Một định nghĩa hàm sẽ cho biết hàm đó tên gì, có những đối số nào và kiểu trả về là gì nhưng không mô tả thuật toán của hàm đó, xem ở hình 2. Một khai báo hàm sẽ cho biết tất cả các thông tin về hàm bao gồm tên, đối số, kiểu trả về và thuật toán của hàm, xem hình 3.
- Một source code có thể có nhiều source file và header file khác nhau, tùy mức độ phức tạp của project. Những gì được đề cập ở trên chỉ là ví dụ cơ bản để bạn có thể hiểu và hình dung được cách chia một source code khoa học.
-------------------------------------------------------------------------------------------------------------------------------
[1] Header file là loại file có định dạng *.h, thông
thường file này có nhiệm vụ khai báo các hàm sẽ được sử dụng.
[2] Source file là loại file có định dạng *.c, loại
file này được dùng để định nghĩa các hàm được khai báo trong header file.
I think it's not funny
ReplyDeleteMột định nghĩa hàm sẽ cho biết hàm đó tên gì, có những đối số nào và kiểu trả về là gì nhưng không mô tả thuật toán của hàm đó, xem ở hình 2. Một khai báo hàm sẽ cho biết tất cả các thông tin về hàm bao gồm tên, đối số, kiểu trả về và thuật toán của hàm, xem hình 3
ReplyDelete=> chỗ này hình như bạn bị lẫn lộn chỗ định nghĩa và khai báo