ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1245796 Топик полностью
VladislavS. (03.10.2022 08:54, просмотров: 324) ответил SciFi на Это и есть сишные прокладки, нет? КМК, значительная часть проблем плюсов в том, что плюсовая публика излишне идеологизирована: "Нет сишным прокладкам! Мы тут плюсы или где?"
Это ваши тараканы какие-то. Почему вы боитесь "прокладок"? Они даже накладных расходов не несут. Смотрите примеры: 

Класс железки

struct TMyHardware
{
  static void TMyHardwareIRQ0() { __NOP(); __BKPT(0); __NOP(); }
  void TMyHardwareIRQ1() { __BKPT(0); __NOP(); __BKPT(0);  }
};


1. Можно вызвать в качестве обработчика статический метод класса и всё заинлайнится

extern "C" void EXTI0_IRQHandler()
{
  TMyHardware::TMyHardwareIRQ0();
//EXTI0_IRQHandler:
//        Nop                     
//        BKPT     #0x0
//        Nop                     
}//        BX       LR


2. Можно вызвать обычный метод объекта и опять всё заинлайнилось

TMyHardware mh;
extern "C" void EXTI1_IRQHandler()
{
  mh.TMyHardwareIRQ1();
//EXTI1_IRQHandler:
//        BKPT     #0x0
//        Nop                     
//        BKPT     #0x0
}//        BX       LR


3. Метод mh.TMyHardwareIRQ1() имеет адрес и никто не запрещает его записать в таблицу векторов прерываний, чтобы не было прокладок. Немного пошаманить со стартапом и всё получится. Но это нафиг не надо. Ведь С++ применяется не ради фана, а ради получения каких-то преимуществ. Где преимуществ нет и смысла нет.