`
linest
  • 浏览: 150761 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

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 );
......




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics