趣百科

如何理解c语言中extern "C"的作用

编辑:Simone 2025-04-22 11:51:57 527 阅读

如何理解c语言中extern

在c或c++语言程序中,我们总能看到extern "C"后跟大括号的声明,这个有什么作用呢?有时候在c语言中,有时候又在c++文件中找到,它的用法到底是怎么样的呢?

本文详细介绍extern "C"在c/c++语言中的作用。

c语言代码和c++语言编写的代码之间可以相互调用,而extern "C"的用法就在于使c++代码中能访问c语言代码。这就是它的根本作用。

为了后面讲解,我们定义了c++的main函数,并且调用一个Add方法。

如果都使用g++编译器,程序编译是没问题的。当我们使用gcc编译Add方法后,在用g++编译整个程序,发现编译报错,找不到Add方法。

为什么编译c++程序,并使用gcc编译后的c语言目标文件,会报错找不到对应的方法呢?

我们分别用gcc和g++编译add文件,并通过strings查看add方法,发现add方法符号并不相同。如下图所示。

因为在c++中函数可以重载,所以不能完全通过函数名找到对应的函数。所以,在编译main函数时,报错找不到对应的add方法。

这时就需要使用extern "C"声明c语言函数。

第一种方式:直接在cpp文件中,引用c语言头文件时加上extern "C"声明,如下所示:

第二种方式,在编写c语言代码时,我们主动提供extern "C"声明,表明我们代码可支持c++语言调用。

在c语言中添加extern "C"声明时,我们需要加上宏定义_cplusplus的判断。这个宏的作用时,如果使用gcc编译器编译代码则忽略该定义;如果使用g++编译器编译则包含extern "C"声明。

我们看下如果不添加该宏定义时,使用gcc编译将报错,如下图所示:

版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/answer/183139.html

相关推荐