extern

参考了网上资料总结一下
1.extern 只是声明,并不是定义,没有分配内存空间。

2.标有 extern 是告诉编译器被修饰的可以在本模块或外部模块使用,相反 static 只能本模块使用

3.extern C 结果:实现C++与C及其它语言的混合编程。

4.extern C 原因:C++有重载的概念,采用了mangled name的机制,给每一个重载版本生成不同名字,一般是函数名加上类型名。如void foo( int x, int y );可能在C下生成_foo,在C++下生成_foo_int_int

5.用法:
(1)在C++中引用C语言中的函数和变量,在C++包含C语言头文件时包上
如cpp中

extern "C"
{
#include "cExample.h" //c head file
}
....


(2)在C中引用C++语言中的函数和变量时,C++的头文件需添加extern "C",但是在C语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型。

如cpp头文件

#ifndef CPP_EXAMPLE_H
#define CPP_EXAMPLE_H
extern "C" int add( int x, int y );
#endif


c实现文件,注意不能#include "cExample.h"

extern int add( int x, int y );
......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值