c语言extern的用法,c语言中extern

dfnjsfkhak 44 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言extern的用法的问题,于是小编就整理了4个相关介绍c语言extern的用法的解答,让我们一起看看吧。

  1. c语言中的extern怎么用?
  2. extern是什么变量?
  3. C编译器编译后的函数,为什么要加extern“C”声明?
  4. c类库如何调用?

c语言中的extern怎么用?

extern在c中就是个外部申明,因为C是先申明再使用,当你想调用变量或者函数不在你的模块当中,你可以使用外部申明。在使用外部申明的时候要特别注意,因为这只是个申明,并不是实体,当出现声明和实体不符的时候,编译器是不会管的,链接后就可能出现错误。比如你的实体是 int sample( int x ) ;而你在申明的时候是extern int sample( void ) ; 所以我不喜欢这种方式去声明。特别是多个人合作项目的时候,这种方法往往导致的结果很难去debug。即使是别人写好提供给你的,那他在修改了函数或者变量的类型参数,往往会忘记修改给你的申明。

extern 还有个作用就是当你C和C++混用的时候,比如在C++中要使用C, 那么就要告诉编译器,你这段代码使用的是C,需要用C的编译器去编译,那可以使用extern "C" { .........} 否则编译会有问题

c语言extern的用法,c语言中extern-第1张图片-芜湖力博教育咨询公司
图片来源网络,侵删)

extern是什么变量?

是一个修饰符。

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。

extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。另外,extern也可用来进行链接指定。

c语言extern的用法,c语言中extern-第2张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

C编译器编译后的函数,为什么要加extern“C”声明?

函数经过编译系统的翻译成汇编,函数名对应着汇编标号。因为C编译函数名与得到的汇编代号基本一样,如:fun()=>_fun, main=>_main但是C++中函数名与得到的汇编代号有比较大的差别。如:由于函数重载,函数名一样,但汇编代号绝对不能一样。为了区分,编译器会把函数名和参数类型合在一起作为汇编代号,这样就解决了重载问题。具体如何把函数名和参数类型合在一起,要看编译器的帮助说明了。这样一来,如果C++调用C,如fun(),则调用名就不是C的翻译结果_fun,而是带有参数信息的一个名字,因此就不能调用到fun(),为了解这个问题,加上extern "C"表示该函数的调用规则是C的规则,则调用时就不使用C++规则的带有参数信息的名字,而是_fun,从而达到调用C函数的目的。在make方式加入lib的方法,直接看编译器的行参数的帮助说明。在集成开发环境中链接一个lib的方法有两个

1。在菜单project->add to project->files...中加入对应的lib文件即可。

2。在project->setting中link的object/library modules中加入对应lib文件方法1较2好,因为2必须在debug,release等中分别。

c语言extern的用法,c语言中extern-第3张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

c类库如何调用?

要调用C类库,您需要使用C语言的编译器和链接器。以下是一般的步骤:

1. 包含头文件:首先,您需要在代码中包含C类库的头文件。这些头文件定义了库中的函数和结构体等。

```c

#include <library_name.h>

```

2. 链接库文件:在编译代码时,需要将C类库的二进制文件链接到您的程序中。这通常涉及使用编译器提供的命令行选项来指定要链接的库文件。例如,对于GCC编译器,您可以使用以下选项:

```bash

gcc -o output_file source_file.c -llibrary_name

```

其中,`output_file`是您要生成的可执行文件的名称,`source_file.c`是您的源代码文件,`-llibrary_name`选项告诉编译器链接名为`library_name`的库文件。

到此,以上就是小编对于c语言extern的用法的问题就介绍到这了,希望介绍关于c语言extern的用法的4点解答对大家有用

标签: 编译器 extern 函数