对于extern "C"的说明

原创 2004年07月29日 19:54:00

Mixed-Language Programming with C++

C++ uses the same calling convention and parameter-passing techniques as C, but naming conventions are different because of C++ decoration of external symbols. By causing C++ to drop name decoration, the extern "C" syntax makes it possible for a C++ module to share data and routines with other languages.

The following example declares prn as an external function using the C naming convention. This declaration appears in C++ source code.

extern "C"
{
    void prn();
}

To call functions written in Fortran (or MASM), declare the function as you would in C and use a "C" linkage specification. For example, to call the Fortran function FACT from C++, declare it as follows:

extern "C" { int __stdcall FACT( int n ); }

The extern "C" syntax can be used to adjust a call from C++ to other languages, or to change the naming convention of C++ routines called from other languages. However, extern "C" can be used only from within C++. If the C++ code does not use extern "C" and cannot be changed, you can call C++ routines only by determining the name decoration and generating it from the other language. You can always determine the decoration by using the DUMPBIN utility. Use this approach only as a last resort, because the decoration scheme is not guaranteed to remain the same between versions.

 

Use of extern "C" has some restrictions:

You cannot declare a member function with extern "C".


You can specify extern "C" for only one instance of an overloaded function; all other instances of an overloaded function have C++ linkage.
For more information on the extern "C" linkage specification, seeLinkage Specifications in C++ Language Reference.

 

简单介绍C语言中auto,register,static,const,volatile,extern等几个关键字的作用

C语言中auto,register,static,const,volatile,extern等几个关键字的作用
  • slience_J
  • slience_J
  • 2016-07-20 10:36:42
  • 436

C/C++函数名称修饰规则及extern "C"的作用

一、函数名称修饰规则 由于c语言不支持函数重载,而c++语言支持函数重载,所以c和c++的函数名称修饰规则是不相同的。   以下面这个Add函数为例,来探讨一下c和c++语言的函数名称修饰规则。 in...
  • XHfight
  • XHfight
  • 2016-06-26 19:50:13
  • 1961

【C++ 快速入门】exern关键字的用法

http://hi.baidu.com/pccoyote/item/93a90b0fe94facca74cd3cdc extern是C/C++语言中表明函数和全局变量作用范围(可见性...
  • horsttnann
  • horsttnann
  • 2014-04-15 14:18:48
  • 489

extern "C"什么意思

缘由 C语言不支持函数重载,编译之后的函数名依然是原函数名。在c++中,支持了函数重载,重载之后的函数名 为 原函数名+参数名。比如函数 bool max(int a, int b),编译之后,c中为...
  • bruceyang2009lzu
  • bruceyang2009lzu
  • 2016-03-17 22:19:11
  • 845

C和C++混合编译,extern"C"的用法

第一篇:转载于C和C++混合编译关于extern_C 通常,在C语言的头文件中经常可以看到类似下面这种形式的代码#ifdef __cplusplus extern "C" { #endif...
  • MonroeD
  • MonroeD
  • 2017-02-05 14:22:00
  • 5120

extern ”C"的使用

本文分析extern “C”的使用方法;介绍C++和C文件相互调用的方式。 extern "C"           extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“ex...
  • u013074465
  • u013074465
  • 2015-01-15 11:10:08
  • 5406

extern “C”使用详解.doc

  • 2010年04月19日 10:33
  • 33KB
  • 下载

C语言正确使用extern关键字

转载请注明出处利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数,下面就结合具体的实例,分类说明一下。 一、引用同一个文件中的变量#includeint func();int...
  • xingjiarong
  • xingjiarong
  • 2015-08-14 08:37:33
  • 31919

全局变量及其作用域-外部变量:extern

全局变量是在函数外部定义的变量, 它不属于哪一个函数,它属于一个源程序文件.其作用域是从变量定义的位置开始,到整个源文件结束. 全局变量可以被作用域内的所有函数直接引用.如果在一个函数中改变了全局变量...
  • u010345869
  • u010345869
  • 2014-04-14 10:58:48
  • 797

extern "c" 什么时候使用

在写c/c++的时候,对于c函数总要来个extern "c"{ func(...)}. 那么到底什么时候需要呢写这个extern "c",不写又有什么后果呢。 demo.cpp #inc...
  • my_us_er
  • my_us_er
  • 2016-02-15 10:55:44
  • 591
收藏助手
不良信息举报
您举报文章:对于extern "C"的说明
举报原因:
原因补充:

(最多只允许输入30个字)