Можно ли запустить код C ++ внутри внешнего блока "C"? - PullRequest
4 голосов
/ 03 апреля 2020

Например,

class demo {
public:
    static void printDemo(void)
    {
        std::cout << "Hi there" << std::endl;
    }
};

extern "C"{

void myInterrupt(void)
{
    demo::printDemo();
} 

}

Обычно extern "C" предназначен для поддержки связи в стиле C, поэтому объявление myInterrupt совпадает с объявлением в векторе прерываний, объявленном в другом файле, например startup.S и адрес этой функции эффективно устанавливается в векторе.

Но влияет ли на него вызов дополнительных функций C ++ внутри этого блока?

1 Ответ

4 голосов
/ 03 апреля 2020

Можно ли запускать код C ++ внутри внешнего блока «C»?

Да.

Функция имеет интерфейс C в том смысле, что она можно вызвать из программы C. Но реализация может содержать код C ++.

Но влияет ли на него вызов дополнительных функций c ++ внутри этого блока?

Нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...