Tôi có mã C++ sử dụng một số thư viện C. Các thư viện C thực hiện các cuộc gọi lại ngôn ngữ C. Tôi đã viết một cuộc gọi lại trong mã C + + của tôi và bây giờ tôi bằng cách nào đó cần phải báo cáo lỗi từ nó (nhưng nó trả về void). Tôi tự hỏi nếu tôi có thể ném một ngoại lệ từ một cuộc gọi lại C được sử dụng từ mã C++?Tôi có thể ném ngoại lệ C++ từ cuộc gọi lại C cũ không?
Điều này rất khó hiểu đối với tôi.
Cảm ơn, Boda Cydo.
+1 điểm tốt, thư viện C có thể cấp phát bộ nhớ, mở tệp hoặc kết nối mạng trước khi gọi hàm gọi lại. Nếu bạn ném một ngoại lệ ở đó, thư viện không rõ ràng sau đó. – Ozan
Cảm ơn lời khuyên. Tôi đã làm cho nó sử dụng một biến toàn cầu được thiết lập nếu xảy ra lỗi. Tất cả các cuộc gọi tiếp theo với hàm gọi lại C này sau đó chỉ trả lại và không làm gì cả. Sau khi thư viện được thực hiện với tất cả các cuộc gọi C và tôi quay trở lại mã C++ của mình, tôi kiểm tra xem biến toàn cục này đã được đặt chưa, và nếu có, tôi báo cáo lỗi. – bodacydo
Hai câu lệnh đầu tiên của bạn có mâu thuẫn lẫn nhau. "Có, bạn sẽ có thể làm như vậy." - Được rồi, tốt lắm. "Tuy nhiên, hãy nhớ rằng hoàn toàn có khả năng là thư viện C không được viết là ngoại lệ an toàn," - Ồ, vậy nên câu trả lời thực sự là không. Không bao giờ ném ngoại lệ qua mã không được biết là ngoại lệ an toàn. – JeremyP