Điều quan trọng là trong này:
trước ngầm khai của 'point_forward' đã ở đây
On line 96 bạn có:
point_forward(m); // where m is a mem_ptr;
Kể từ khi trình biên dịch vẫn chưa nhìn thấy một khai báo hàm cho point_forward(m)
, nó "ngầm định nghĩa "(nghĩa là, giả định) một hàm trả về một int:
int point_forward(mem_ptr m);
Điều này mâu thuẫn với định nghĩa sau:
void point_forward (mem_ptr m) {
Để sửa lỗi này, bạn có thể:
Đặt một tuyên bố rõ ràng ở đâu đó trước dòng 96: void point_forward(mem_ptr m);
này sẽ cho trình biên dịch như thế nào để điều trị point_forward()
khi nó nhìn thấy nó trên dòng 96, mặc dù nó chưa thấy chức năng thực hiện.
Hoặc, xác định toàn bộ hàm trên dòng 96 (di chuyển định nghĩa hàm từ dòng 134 trở đi lên trên dòng 96).
Đây là một chút more about declaring functions.
Nói chung, đối với phong cách, tôi sẽ hoặc là:
Nếu bạn không muốn sử dụng point_forward()
trong bất kỳ tập tin C khác, định nghĩa nó đầy đủ:
static void point_forward(mem_ptr m) { ..function body goes here.. }
tại đầu tệp nguồn.
Nếu bạn muốn sử dụng point_forward()
trong các tập tin C khác, đưa ra tuyên bố về phía trước:
void point_forward(mem_ptr m);
trong một tập tin tiêu đề cho các tập tin khác bao gồm.
Nguồn
2013-04-24 02:05:30
hãy dán những gì bạn có trong dòng 96 –
point_forward (m); – user2313514
Đó là trường hợp duy nhất của hàm này trong mã của tôi. – user2313514