смешивать c/c++ во встроенном Workbench IAR

Я экспериментирую с некоторыми примерами проектов для stm32f4. Я хотел бы использовать некоторые из них с некоторым кодом С++.

Если я добавлю файл cpp, ide, кажется, правильно распознает его как таковой. И если я установлю язык на автоматический (на основе расширения), мой файл cpp будет создан с классом в нем, отлично.

Но могу ли я соединиться между ними? Все компилируется (без предупреждений), но не удается связать, если я вызываю функцию cpp из c (нет определения для )

Есть ли способ вызвать cpp из c и c из cpp?

Спасибо


iar
person Ianb    schedule 24.05.2013    source источник


Ответы (1)


Да, это возможно. Однако вы должны явно указать C++, что функция является функцией C. Вы делаете это, объявляя это следующим образом:

extern "C"
{
   void my_function(void);
}

Чтобы обеспечить правильную работу файлов заголовков как в C, так и в C++, их обычно записывают так:

#ifdef __cplusplus
extern "C"
{
#endif
   void my_function(void);
#ifdef __cplusplus
}
#endif
person Lindydancer    schedule 24.05.2013