Estoy desarrollando dll componente C++ que puede ser utilizado por C o C++. las funciones DLL expuestos son los siguientes¿Puede un programa C manejar excepciones C++?
#include <tchar.h>
#ifdef IMPORT
#define DLL __declspec(dllimport)
#else
#define DLL __declspec(dllexport)
#endif
extern "C" {
DLL bool __cdecl Init();
DLL bool __cdecl Foo(const TCHAR*);
DLL bool __cdecl Release();
}
la implementación interna de estas funciones son clases de C++ que no están expuestos, Asumo utilizando este estilo el DLL se puede utilizar ya sea en ++ aplicaciones C o C. El problema es que no manejo ningún tipo de excepción de C++ (es decir, bad_alloc) y dejé esto al llamador (la capa más alta). Después de mucho debate con mis colegas, ¿debería detectar todas las excepciones y devolver el código de error o al menos falso porque en el caso de la aplicación C no puede manejar las excepciones de C++? ¿es eso cierto? y que debería hacer en general? ¿Existe una regla general para manejar las excepciones si está desarrollando un componente que será utilizado por otro sistema?
No existe una excepción en C. – sje397
http://www.on-time.com/ddj0011.htm – DumbCoder
C++ puede registrar una C -linkage/'extern C' function como manejador de excepción para excepciones no detectadas a través de' std :: set_unexpected() '. Si se conoce el nombre de ese nombre, puede llamarlo directamente desde el C. En caso contrario, puede exponer un' extern C 'envoltorio para ello. No es que esta sea una interfaz conveniente, pero si es absolutamente inevitable que su biblioteca contamine fuera de sus propios límites ... –