C++ C

在C++代码中调用C接口

extern C

Posted by 婷 on September 15, 2019 本文总阅读量

前言

之前在改SDK代码的时候发现在那些中断函数的地方都会用extern C{}去把中断函数给“包”起来。(在之前的博客里面也有提及到这个点)

1.png

2.png

C++调用C接口

上网大概搜了一些资料跟说法

在C++中如果要调用C的接口,因为C++生成函数签名的方式与C不一致,(至于这个生成函数签名是什么我是真的不知道),用extern C是要告诉编译器这部分被extern C囊括起来的代码是要把它当成C代码来处理。

C++跟C都调用C接口

那如果C++跟C都要调用C的代码呢?

别怕还有这个

3.png

如果是C++的代码,那么extern C囊括的代码就会当成C代码处理了;如果是C的代码的话,那么#ifdef __cplusplus那段预编译就不会通过啦,代码也可以正常使用。(C中是没有extern C的用法的)

#ifdef __cplusplus
extern "C" {
#endif 
void USART3_IRQHandler(void)
{
  ......
}
#ifdef __cplusplus
}
#endif