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

dfnjsfkhak 20 0

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

  1. c语言中的extern怎么用?
  2. include和extern有什么区别?

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张图片-芜湖力博教育咨询公司
图片来源网络,侵删)

include和extern有什么区别?

`include` 和 `extern` 是C / C++编程中使用的关键字,它们有不同的作用和用法

1. `include`:是一个预处理器,用于程序中包含其他文件内容。使用`#include`,可以将另一个文件的内容复制到当前文件中。被包含的文件通常包含函数声明、宏定义结构定义等。

   例如:

(图片来源网络,侵删)

   ```c

   #include <stdio.h>

   ```

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

   上述语句将在程序中包含了标准输入输出头文件`stdio.h`的内容,这样就可以使用`printf`和`scanf`等函数。

#include和extern在本质上是不同的,但在实际应用中有一些相似之处。以下是两者的主要区别:
定义:
#include是一个预处理器指令,它告诉编译器在编译前将指定的文件内容包含在当前位置。通常用于包含头文件,但也可以包含其他类型的文件。
extern是一个关键字,用于声明一个变量或函数是在其他地方定义的,而不是在当前文件中定义的。它告诉编译器这个变量或函数在链接时会被解析。
作用:
#include的主要作用是包含一个文件的内容,以便在当前位置使用。这可以用于头文件、源文件或其他类型的文件。
extern的主要作用是声明一个变量或函数,以便在当前文件中使用。它告诉编译器这个变量或函数在其他地方定义,因此不需要在当前文件中提供完整的定义。
语法
#include的语法是#include 或#include "filename"。其中,尖括号表示编译器在标准库目录查找文件,双引号表示编译器在当前目录或指定的其他目录中查找文件。
extern的语法是extern datatype variable_name或extern function_name(parameters);
适用场景:
#include通常用于包含头文件,以便在多个源文件***享相同的代码。例如,如果你有一个头文件包含了函数的声明和类型定义,你可以在多个源文件中包含这个头文件,以便它们都可以使用这些函数和类型。
extern通常用于声明在多个源文件中定义的变量或函数。例如,如果你有一个函数在一个源文件中定义,并在另一个源文件中声明为extern,那么在链接时,链接器将找到这个函数的定义并正确地链接它。
编译和链接过程
当编译器遇到#include指令时,它会将指定的文件内容插入到当前位置。然后,编译器会编译整个文件并生成目标文件。在链接阶段,链接器会将所有的目标文件和库文件连接起来生成最终的可执行文件。
当编译器遇到extern声明时,它会知道这个变量或函数是在其他地方定义的。在链接阶段,链接器会找到这个变量或函数的定义并正确地链接它。如果找不到定义,链接器会报错。
总之,#include和extern在本质上是不同的,但在实际应用中有一些相似之处。#include用于包含文件内容,而extern用于声明在其他地方定义的变量或函数。

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

标签: 文件 extern 函数