No he escrito el código C++ en mucho tiempo; sin embargo, ahora tengo que trabajar en un DSP con instrumentos F28335 de Texas y estoy intentando migrar de C a C++. Tengo el siguiente código que está tratando de inicializar una rutina de servicio de interrupción con un método estático de una clase:Puntero de conversión C++ al método estático
//type definition for the interrupt service routine
typedef interrupt void (*PINT)(void);
//EPWMManager.h
class EPWMManager
{
public:
EPWMManager();
static interrupt void Epwm1InterruptHandler(void);
};
//EPWMManager.cpp
interrupt void EPWMManager::Epwm1InterruptHandler(void)
{
//some code to be called on interruption
}
//main.cpp
int main(void)
{
PINT p;
p = &(EPWMManager::Epwm1InterruptHandler);
return 0;
}
Al compilar me sale el siguiente:
error: a value of type "void (*)()" cannot be assigned to an entity of type "PINT"
supongo que me falta un poco de yeso
La palabra clave 'interrupt' no es parte de C++. Debe ser una extensión específica de su implementación. ¿Qué sucede si lo elimina de las definiciones de 'PINT' y' Epwm1InterruptHandler'? ¿Todavía recibes un error? –
En mi experiencia, la calidad de los compiladores de TI para procesadores DSP no es impresionante, incluso para C (por ejemplo, hemos rebotado más de una vez en errores del generador de código en casos límite de manejo de páginas). ¿Estás seguro de que migrar a un lenguaje mucho más complejo como C++ es una buena idea? – 6502
si tomo 'interrumpir' el error está fuera ... Sin embargo, no estoy seguro de las implicaciones que tiene. Estaba pensando que migrar a C++ sería una buena idea para tener todo más estructurado (clases, objetos, patrones de diseño, etc.) ya que nuestro código C está empezando a verse muy desordenado. – TropE