Tôi đang viết thư viện dùng chung nền tảng (.so
trong linux và .dll
trong cửa sổ) bằng C. Hiện tại khi có lỗi, chức năng thư viện trả lại mã lỗi thích hợp và ghi thông tin lỗi vào số stderr
. Chức năng thư viện cũng phát ra một số thông tin và thông báo gỡ lỗi đến stdout
. Điều này hoạt động tốt cho các máy khách dựa trên bảng điều khiển.Lỗi xử lý chiến lược trong thư viện dùng chung - C
Bây giờ thư viện này sẽ có các chương trình khách hàng sử dụng GUI được lập trình bằng C++ & wxWidgets. Tôi tự hỏi điều gì sẽ là thực hành tốt nhất trong việc xử lý các lỗi và thông báo cho nó? Ứng dụng UI có thể truy cập dữ liệu đến stdout
và stderr
trên tất cả các nền tảng không?
Một cách khác mà tôi đã nghĩ là chức năng khởi tạo thư viện khởi tạo cấu trúc sẽ có con trỏ hàm. Tất cả các hàm trên thư viện sẽ lấy một cá thể của cấu trúc này và gọi các con trỏ hàm. Bằng cách này, khách hàng có thể chọn nơi in các tin nhắn.
Tôi tự hỏi điều gì sẽ là cách rõ ràng để giải quyết vấn đề này? Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời.
một câu hỏi khác. Vì vậy, trong OpenSSL, hàng đợi lỗi nội bộ bị xóa như thế nào? –
@Appu: Có một chức năng được cung cấp cho ứng dụng để yêu cầu "lỗi tiếp theo". Điều này loại bỏ lỗi sớm nhất từ hàng đợi nội bộ và trả về nó cho ứng dụng. – caf