关闭

C++学习笔记 extern C

标签: cc++
250人阅读 评论(0) 收藏 举报
分类:

C++头文件中的extern “C”的作用,一般都是如下形式

#ifdef __cplusplus
extern "C" {
#endif  /* __cplusplus */
中间还有很多其他的
#ifdef __cplusplus
}
#endif  /* __cplusplus */

首先要清楚的是 extern “C”是只有C++编译器才理解的东西,C的编译器会报错的。C++编译器添加这个的目的是为了让c的代码和c++代码能更好的一起工作。
因为编译之后函数的名字都是存放在符号表中的,而且C和C++为函数命名的方式是不同的,如下例

void foo( int x, int y );
c编译后函数名字:_foo
c++编译后名字:_foo_int_int

c++这种方式叫做mangled name,是将函数参数类型加了进来,用以支持重载, 如果用 extern “C”包围的话,C++在编译是就会使用C的函数命名方法来命名

参考: 这篇文章

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:85140次
    • 积分:1793
    • 等级:
    • 排名:千里之外
    • 原创:90篇
    • 转载:60篇
    • 译文:0篇
    • 评论:5条
    最新评论