Hi Nhật,
Nguyên nhân là do em chưa sử dụng hàm INLINE. Hàm dạng inline tương
tự như macro, trình biên dịch sẽ thay thế lời gọi hàm bằng các lệnh
viết trong hàm (khác với gọi hàm thông thường là lệnh nhảy đến
chương trình con). Dùng inline khi không muốn tốn thời gian cho
chuyển ngữ cảnh, code sẽ lớn hơn. Viết inline nói chung tốt hơn
MACRO vì có hỗ trợ phát hiện lỗi biến, truyền thông số tường minh.
Do tương tự macro, nên hàm inline có thể viết luôn trong file .h. Có
3 cách để khai báo:
http://gcc.gnu.org/onlinedocs/gcc/Inline.html
Xem qua code thì đang dùng dạng "static". Nguyên nhân lỗi có thể là
khi dịch đã chọn kiểu không đúng, hoặc khi dịch cho C++ thì quá
trình xử lý hàm inline khác gì đó với C. Em tìm giải quyết theo
hướng này thử.