读书人

extern quot;Cquot;解决方法

发布时间: 2012-02-27 10:00:22 作者: rapoo

extern "C"
谁能帮我详细的讲解一下这个标识符,在函数名前面声明这个标识符,在c++中,是指该函数以c语言方式进行编译吧?因此该函数就不再支持函数重载了,编译器不会对该函数名进行改变。
extern "C" void Func(int a)
{
cout<<a<<endl;
}

extern "C" void Func(float a)
{
cout<<a<<endl;
}
这段函数在c++中就无法通过编译了,证明了我的观点。
那么请问这个标识符的用途在哪些方面呢?

[解决办法]
http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html
[解决办法]
extern "C" 意思是用 C的符号命名方法来命名 当行的那个符号(比方函数、可供其他原文件、程序使用的变量)。

大面积的extern "C"
{
}
范围内的全部符号用 C的符号命名方法来。


c的符号重命名只包含调用方式,stdcall是 函数名@参数数量的格式, _cdecl 是单独的符号名。__fastcall的类型是 @函数名@参数数量 的格式。 c导出的变量名是 单独的符号名
c++的符号命名方法类似于乱码,但特殊的是函数的符号名中除了调用方式还包含了 函数参数数量和调用方式,因此符号名用来实现重载之类的机制。

读书人网 >C++

热点推荐