Ho codice C++ che utilizza alcune librerie C. Le librerie C accettano callback in linguaggio C. Ho scritto un callback nel mio codice C++ e ora ho in qualche modo bisogno di riportare un errore da esso (ma restituisce vuoto). Mi chiedo se posso lanciare un'eccezione da un callback C che viene utilizzato dal codice C++?Posso lanciare eccezioni C++ dai callback legacy C?
Questo è molto difficile per me capire.
Grazie, Boda Cydo.
+1 punto buono, la libreria C può allocare memoria, aprire un file o una connessione di rete prima di chiamare la funzione di callback. Se si lancia un'eccezione lì, la libreria non viene chiarita in seguito. – Ozan
Grazie per i suggerimenti. Ho fatto usare una variabile globale che viene impostata se si è verificato un errore. Tutte le chiamate successive a questa funzione di callback in C quindi tornano e non fanno nulla. Dopo che la libreria ha finito con tutte le chiamate C, e torno al mio codice C++, controllo se questa variabile globale è stata impostata, e se lo era, riporto un errore. – bodacydo
Le tue prime due affermazioni sono mutuamente contraddittorie. "Sì, dovresti essere in grado di farlo." - Ok bene. "Tuttavia, tieni presente che è molto probabile che la libreria C non sia stata scritta per essere eccezionalmente sicura" - Oh, quindi la risposta in realtà non è allora. Non generare mai eccezioni attraverso codice che non è noto per essere eccezionalmente sicuro. – JeremyP