精华内容
下载资源
问答
  • extern关键字作用

    2019-09-23 01:12:25
    1.引用同一个文件中的变量 2.引用不同文件中的变量 3.引用不同文件中的函数(需要指明返回类型和参数) 转载于:https://www.cnblogs.com/1915884031A-qqcom/p/7395659.html...

    1.引用同一个文件中的变量

    2.引用不同文件中的变量 

    3.引用不同文件中的函数(需要指明返回类型和参数)

    转载于:https://www.cnblogs.com/1915884031A-qqcom/p/7395659.html

    展开全文
  • extern关键字作用

    万次阅读 多人点赞 2018-05-11 08:34:37
    1、extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。extern声明不是定义,即不分配存储空间。...2、extern C作用链接指示符extern C 如果程序员希望调用其他程序设计语言尤...


    1、extern用在变量或者函数的声明前,用来说明此变量/函数是在别处定义的,要在此处引用extern声明不是定义,即不分配存储空间。也就是说,在一个文件中定义了变量和函数, 在其他文件中要使用它们, 可以有两种方式:使用头文件,然后声明它们,然后其他文件去包含头文件;在其他文件中直接extern。

    2、extern C作用

    链接指示符extern C
        
    如果程序员希望调用其他程序设计语言尤其是写的函数,那么调用函数时必须告诉编译器使用不同的要求,例如当这样的函数被调用时函数名或参数排列的顺序可能不同,无论是C++函数调用它还是用其他语言写的函数调用它,程序员用链接指示符告诉编译器该函数是用其他的程序设计语言编写的,链接指示符有两种形式既可以是单一语句形式也可以是复合语句形式。
    // 
    单一语句形式的链接指示符
    extern "C" void exit(int);
    // 
    复合语句形式的链接指示符
    extern "C" {
    int printf( const char* ... );
    int scanf( const char* ... );
    }
    // 
    复合语句形式的链接指示符
    extern "C" {
    #include <cmath>
    }
        
    链接指示符的第一种形式由关键字extern 后跟一个字符串常量以及一个普通的函数,声明构成虽然函数是用另外一种语言编写的但调用它仍然需要类型检查例如编译器会检查传递给函数exit()的实参的类型是否是int 或者能够隐式地转换成int 型,多个函数声明可以用花括号包含在链接指示符复合语句中,这是链接指示符的第二种形式花扩号被用作分割符表示链接指示符应用在哪些声明上在其他意义上该花括号被忽略,所以在花括号中声明的函数名对外是可见的就好像函数是在复合语句外声明的一样,例如在前面的例子中复合语句extern "C"表示函数printf()scanf()是在语言中写的,函数因此这个声明的意义就如同printf()scanf()是在extern "C"复合语句外面声明的一样,当复合语句链接指示符的括号中含有#include 时,在头文件中的函数声明都被假定是用链接指示符的程序设计语言所写的,在前面的例子中在头文件<cmath>中声明的函数都是C函数链接指示符不能出现在函数体中下列代码段将会导致编译错误。
    int main()
    {
    // 
    错误链接指示符不能出现在函数内
    extern "C" double sqrt( double );
    305 
    第七章函数
    double getValue(); //ok
    double result = sqrt ( getValue() );
    //...
    return 0;
    }
    如果把链接指示符移到函数体外程序编译将无错误
    extern "C" double sqrt( double );
    int main()
    {
    double getValue(); //ok
    double result = sqrt ( getValue() );
    //...
    return 0;
    }
        
    但是把链接指示符放在头文件中更合适,在那里函数声明描述了函数的接口所属,如果我们希望C++函数能够为程序所用又该怎么办呢我们也可以使用extern "C"链接指示符来使C++函数为程序可用例如。
    // 
    函数calc() 可以被程序调用
    extern "C" double calc( double dparm ) { /* ... */ }
        
    如果一个函数在同一文件中不只被声明一次则链接指示符可以出现在每个声明中它,也可以只出现在函数的第一次声明中,在这种情况下第二个及以后的声明都接受第一个声明中链接指示符指定的链接规则例如
    // ---- myMath.h ----
    extern "C" double calc( double );
    // ---- myMath.C ----
    // 
    Math.h 中的calc() 的声明
    #include "myMath.h"
    // 
    定义了extern "C" calc() 函数
    // calc() 
    可以从程序中被调用
    double calc( double dparm ) { // ...
        
    在本节中我们只看到为语言提供的链接指示extern "C"extern "C"是惟一被保证由所有C++实现都支持的,每个编译器实现都可以为其环境下常用的语言提供其他链接指示例如extern "Ada"可以用来声明是用Ada 语言写的函数,extern "FORTRAN"用来声明是用FORTRAN 语言写的函数,等等因为其他的链接指示随着具体实现的不同而不同所以建议读者查看编译器的用户指南以获得其他链接指示符的进一步信息。

    总结 extern “C”

           extern “C” 不但具有传统的声明外部变量的功能,还具有告知C++链接器使用C函数规范来链接的功能。 还具有告知C++编译器使用C规范来命名的功能。

    展开全文
  • 1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。a.在全局区分配内存。b.如果没有初始化,其默认值为0.c.该变量在本文件内从定义开始到文件结束可见...

    static用法:

    在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。

    1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。

    a.在全局区分配内存。

    b.如果没有初始化,其默认值为0.

    c.该变量在本文件内从定义开始到文件结束可见。

    2、定义局部静态变量:在局部变量前面加上关键字static,其特点如下:

    a.该变量在全局数据区分配内存。

    b.它始终驻留在全局数据区,直到程序运行结束。

    c. 其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。

    3、定义静态函数:在函数返回类型前加上static关键字,函数即被定义为静态函数,其特点如下:

    a.静态函数只能在本源文件中使用

    b.在文件作用域中声明的inline函数默认为static类型

    总结:用static定义的全局和局部静态变量的区别是,全局的静态变量的作用域和可见域都是从文件的定义开始到整个文件结束;而局部的静态变量可见域是从文件的定义开始到整个文件结束,作用域是从该语句块的定义开始到该语句块结束

    extern的用法:

    1、声明一个全局(外部)变量

    当用extern声明一个全局变量的时候,首先应明确一点:extern的作用范围是整个工程,也就是说当我们在.h文件中写了extern int a;链接的时候链接器会去其他的.c文件中找有没有int a的定义,如果没有,链接报错;当extern int a;写在.c文件中时,链接器会在这个.c文件该声明语句之后找有没有int a的定义,然后去其他的.cpp文件中找,如果都找不到,链接报错。值得注意的一点:当extern语句出现在头文件中时,不要将声明和定义在一条语句中给出,也就是不要在头文件中写类似于这样的语句:

    extern int a = 1;这种写法,在gcc编译时会给出一个警告:warning: 'a' initialized and declared 'extern'

    注意:external声明和定义的区别,定义只有一次,但是声明没有限制

    int a;  --->定义,默认为0(等效于int a = 0;)

    extern int a;  --->声明外部变量

    extern int a = 1;  --->定义性声明(即在定义的同时声明为全局变量),一般不提倡

    比如:

    头文件a.h:

    extern int a = 1;

    头文件b.h:

    #include "a.h"

    ......

    源文件test.c:

    #include "a.h"

    #include "b.h"

    ......

    这样肯定会报错:会报错说变量a重复定义

    所有一般(提倡)的做法是:

    只在头文件中通过extern给出全局变量的声明(即external int a; 而不要写成external int a = 1;),并在源文件中给出定义(并且只能定义一次)

    比如:

    头文件a.h:

    ......

    源文件1.c:

    #include "a.h"

    int a = 0;  --->定义

    头文件b.h:

    extern int a;  --->声明

    源文件2.c:

    #include

    #include "2.h"

    void print()

    {

    printf("a = %d

    ", a);

    }

    源文件main.c

    #include "1.h"

    #include "2.h"

    int main()

    {

    print();

    return 0;

    }

    2、extern “C” { /*用C实现的内容(通常写在另外的.c文件中)*/ }

    C++完全兼容C,当extern与“C”连用时,作用是告诉编译器用C的编译规则去解析extern “C”后面的内容。最常见的差别就是C++支持函数重载,而标准C是不支持的。如果不指明extern “C”,C++编译器会根据自己的规则在编译函数时为函数名加上特定的后缀以区别不同的重载版本,而如果是按C的标准来编译的话,则不需要。

    static和external定义的全局变量区别:

    注意:用static定义的全局静态变量可以被模块内所有的函数访问,但不能被模块外其他函数访问。而用external定义的全局

    1、static修饰全局变量时,声明和定义是同时给出的;而extern一般是定义和声明分开,且定义只能一次

    2、static的全局作用域只是自身编译单元(即一个.c文件以及这个.c文件所包含的.h文件);而extern的全局作用域是整个工程(一个工程可以包含很多个.h和.c文件)。即区别就在于“全局”的范围是整个工程,还是自身编译单元。

    展开全文
  • 关键字extern的作用_C语言

    千次阅读 2019-03-02 09:56:10
    前段时间,有个同事跑过来问我,我在一个.c...extern是计算机语言中的一个关键字。可置于变量或者函数前。以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时。在其它模块中寻找其定义。另外。ext...

    前段时间,有个同事跑过来问我,我在一个.c文件有个变量。在另一个文件 如何调用
    我就告诉他 你只要在你的变量前面 加上extern 就可以了

    其实有很多小伙伴对于变量 extern 还不是很熟悉,下面咱们一起全面了解一下extern

    extern是计算机语言中的一个关键字。可置于变量或者函数前。以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时。在其它模块中寻找其定义。另外。extern也可用来进行链接指

    如何使用extern

    以下代码由 励志句子网 提供 www.lzjuzi.com
    extern int test = 0;
    
    在另一个.c 文件 直接使用就行 
    
    #include<stdio.h>
    
    int main() 
    {
       // 此代码 由励志句子网提供 www.lzjuzi.com
       test = 100;
       printf("test is %d\n",test);
    }
    
    
    展开全文
  • 【static关键字作用】 全局静态变量 在全局变量前加上关键字static,全局变量就定义成一个全局静态变量. 静态存储区,在整个程序运行期间一直存在。 初始化:未经初始化的全局静态变量会被自动初始化为0(自动...
  • static关键字修饰分为: 1.全局静态变量 存储区域:静态存储区域,程序运行中一直存在 初始化:未经初始化为0,(自动对象为任意值),除非显示初始化 作用范围:声明他的文件内,从文件开始到文件结束。 2.局部静态...
  • 说一下static关键字作用

    万次阅读 2019-06-22 17:29:32
    在全局变量前加上关键字static,全局变量就定义成一个全局静态变量. 静态存储区,在整个程序运行期间一直存在。 初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化)...
  • Hive面试题

    2018-08-01 11:17:23
    1、说说Hive中的内部表和外部表? Managed Table External Table。 默认 创建时加上external关键字 数据由Hive管理 ...
  • 第4章DDL数据定义

    2021-07-21 15:33:45
    (2)EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置...
  • static关键字作用

    2020-12-30 21:52:28
    C++语言大类基本语言说一下static关键字作用说一下C++和C的区别C++中的四种cast转换C/C++中指针和引用的区别 基本语言 说一下static关键字作用 1.在全局变量之前加上关键字static,则该变量被进一步定义成全局...
  • hive中的外表EXTERNAL TABLE

    千次阅读 2017-11-17 00:04:36
    在hive中,外表是个很重要的组成部分,通过外表可以很方便进行数据的共享。 因为普通的表会将数据文件拷贝自己的目录下,这样想要分享数据只能保存多份数据。...CREATE EXTERNAL TABLE sunwg_test09(id INT
  • 今天研究Java基础类库,Object类的时候,发现了一个关键字:native咦?这是个什么东东?它认识我,我可不认识它!嘿嘿,没关系,baidu一下。Javanative关键字一. 什么是Native Method简单地讲,一个Native Method...
  • 今天研究Java基础类库,Object类的时候,发现了一个关键字:native咦?这是个什么东东?它认识我,我可不认识它!嘿嘿,没关系,baidu一下。Javanative关键字一. 什么是Native Method简单地讲,一个Native Method...
  • C++ external "C"作用

    2020-05-09 11:34:56
    2.external作用 仅仅是声明作用,可以使用外部变量。 一个变量只可以定义1次,但可以声明多次。 3."C"的作用 表示一种编译和连接规约,C和C++的规约是不同的,显示指定"C"可以使用相同的编译方式,在混合编程时很...
  • 本文按照访问可见范围由大到小,简要介绍以上4( internal、private、external、public)个关键字
  • 五、Dart 关键字

    2018-09-22 07:53:28
    一、什么是关键字 关键字就是保留字,比如变量、类型等的名字,通常不能作为标识符使用; 二、关键字有哪些 每种语言的关键字会有所不同,Dart 语言的关键字如下: abstract dynamic implements show ...
  • 智能合约 Solidity 常见关键字总结

    千次阅读 2018-07-11 15:59:15
    最近在写智能合约,对常见的关键字简单总结一哈...函数类型定义如下:function (&lt;parameter types&gt;) {public | private | internal | external} [modifier] [pure|constant|view|payable] ...
  • C语言关键字详解

    2021-05-22 05:02:22
    在C98中关键子总共只有32个,我们来分析一下每个关键字在C语言中它独特的作用。1、关于数据类型的关键字(1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型enum类型可以...
  • 存储类型和static关键字作用C中的存储类型分为两种,一种是静态(static),另一种是自动(automatic)。注意代码是不存在存储类型的问题,它们恒存在于静态内存中。这里所谈的存储类型,都是针对变量而言。静态存储...
  • static关键字主要有三个作用: (1)函数体内,static修饰的变量作用范围为该函数体,不同于auto变量(函数体中没有static修饰的变量或有auto修饰的变量),该变量的内存只被分配一次,因此,该变量的值在下次使用...
  • Robot_Framework:基础_关键字

    千次阅读 2019-11-23 19:47:23
    1、测试套件主要是存放测试案例的,而资源文件主要就是用来存放用户关键字的的 2、在实际的项目测试过程中,往往需要创建许多这样的具有通用性的用户关键字。且不希望这些关键字依附于某个测试套件,甚至是某个项目...
  • Kotlin的关键字

    2019-07-03 22:03:56
    在Kotlin语言中有一些具有特殊用途的单词被称为关键字(keyword),当定义标识符时,不要让... 软关键字:这些关键字可以在他们不起作用的上下文中用作标识符 修饰符关键字:这些关键字也可以在代码中用作标识符 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,032
精华内容 12,412
关键字:

external关键字的作用