У меня тут такой мутантец:
extern "C" {
void BLABLA_IRQHandler(void) {
// some C code
}
}
// some C++ code
Там где C++ codе был какой-то код, который, например, делал вот так:
BlaBla *bla = reinterpret_cast<BlaBla*>(blabla);
Потом этот код методом Копи и Пэйста был перенесен в BLABLA_IRQHandler и он по какой-то причине работает. Мне не париться и оставить как есть или переписать так:
extern "C" {
void BLABLA_IRQHandler(void) {
BlaBla *bla = (BlaBla*)(blabla);
}
}
// some C++ code
? Весь файл компилируется g++. Я так понял это работает, потому что reinterpret_cast - это ключевое слово, поэтому раз компилятор g++, то оно и работает, даже в части extern «C». Я прав? Это вообще надежно, что так работает?