Có lẽ chức năng main
của bạn đã được nhận xét vì ví dụ: sơ chế. Để tìm hiểu xem tiền xử lý đang làm gì, hãy thử gcc -C -E es3.c > es3.i
rồi tìm trình chỉnh sửa vào tệp es3.i đã tạo (và tìm kiếm main
bên trong nó).
Trước tiên, bạn nên luôn luôn (vì bạn là một newbie) biên dịch với
gcc -Wall -g -c es3.c
gcc -Wall -g es3.o -o es3
Cờ -Wall
là vô cùng quan trọng, và bạn nên luôn luôn sử dụng nó. Nó cho trình biên dịch cung cấp cho bạn (gần như) tất cả các cảnh báo. Và bạn nên luôn luôn lắng nghe các cảnh báo, tức là sửa tập tin mã nguồn của bạn es3.C
cho đến khi bạn không còn cảnh báo nữa.
Cờ -g
cũng rất quan trọng vì nó yêu cầu gcc
để đặt thông tin gỡ lỗi vào tệp đối tượng và tệp thi hành. Sau đó, bạn có thể sử dụng trình gỡ lỗi (như gdb
) để gỡ lỗi chương trình của mình.
Để nhận danh sách biểu tượng trong tệp đối tượng hoặc tệp thực thi, bạn có thể sử dụng nm
.
Tất nhiên, tôi giả sử bạn sử dụng hệ thống GNU/Linux (và tôi mời bạn sử dụng GNU/Linux nếu bạn chưa sử dụng nó).
Nguồn
2011-11-01 13:58:06
Có thể là một ý tưởng hay khi đăng mã gây ra lỗi này. – Lundin
@BrandoSK: Khi tôi theo liên kết đó, tôi nhận được đếm ngược 45 giây. Hãy đăng mã như một phần của câu hỏi của bạn hoặc thu hẹp mã xuống một ví dụ nhỏ minh họa sự cố và đăng vấn đề đó. –
Ok, tôi vừa tải xuống tệp nguồn của bạn. (1) Nó được gọi là 'es3_f3.c', không phải' es3.c'. (2) Nó chứa nhiều lỗi, ví dụ một dấu chấm phẩy còn thiếu trên dòng 18. Nó có thể không được biên dịch, có nghĩa là bạn không thể đi đủ xa để thấy lỗi liên kết mà bạn báo cáo. Cho chúng tôi thấy mã thực của bạn. (Tệp nguồn được tải xuống là 73 dòng, đủ ngắn để đăng trực tiếp tại đây.) –