精华内容
下载资源
问答
  • extern关键词 extern至于函数和变量前,标明函数或者变量定义在别的文件中。...C函数链接到外部模块的对应函数,编译成可执行文件。 gcc -o 输出文件名 *.cpp *.a(静态链接库文件) 相关链接: https:...

    extern关键词

    extern至于函数和变量前,标明函数或者变量定义在别的文件中。提示编译器在遇见函数和变量时在其他模块中寻找定义。

    例子

    在这里插入图片描述
    生成目标文件.o文件。

    gcc -c **.c
    

    生成静态链接库文件

    ar rcs    *.a    *.o
    

    C函数链接到外部模块的对应函数,编译成可执行文件。

    gcc -o 输出文件名 *.cpp *.a(静态链接库文件)
    

    相关链接:
    https://blog.csdn.net/shaosunrise/article/details/81176880
    https://www.cnblogs.com/yuxingli/p/7821102.html

    展开全文
  • 上一节有读者咨询extern是什么,这节主要用来解释一下extern在C++中的用法,外部变量在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。 在此作用域内,全局变量可以为本文件中各个函数所...

    C++外部变量

    上一节有读者咨询extern是什么,这节主要用来解释一下extern在C++中的用法,外部变量在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。

    在此作用域内,全局变量可以为本文件中各个函数所引用。编译时将全局变量分配在静态存储区,有时需要用extern来声明全局变量,以扩展全局变量的作用域。

    C++文件内声明全局变量

    如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。

    如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字extern,对该变量作外部变量声明,表示该变量是一个将在下面定义的全局变量。

    有了声明,就可以合乎规则地引用该全局变量,这种声明称为提前引用声明。

    C++多文件程序声明外部变量

    如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量,不能分别在两个文件中各自定义一个外部变量。

    正确的做法是:在任一文件中定义外部变量,而在另一文件中用extern对该变量作外部变量声明。

    用extern扩展全局变量的作用域,虽然能为C++编码带来方便,但应十分慎重,因为在执行一个文件中的函数时,可能会改变了该全局变量的值,从而会影响到另一文件中的函数执行结果。

    经典案例:C++实现用extern对外部变量作引用声明。

    源码分析:

    #include<iostream>//头文件 
    using namespace std;//命名空间 
    int Max(int num1,int num2);//函数声明 
    int num1=10,num2=5;//定义全局变量 
    int main() //主函数 
    {
      extern int num1,num2;//对全局变量num1,num2做引用声明
      cout<<"较大的值是:"<<Max(num1,num2)<<endl; 
    }
    int Max(int num1,int num2)//自定义求两个数中的较大值 
    {
      int temp;//定义一个中间变量 
      if(num1>num2)//判断条件 
      {
        temp=num1;
      }
      else
      {
        temp=num2;
      }
      return temp;//函数返回值为temp 
    }
    

    编译后的结果:

    较大的值是:10
    
    --------------------------------
    Process exited after 0.07294 seconds with return value 0
    请按任意键继续. . .
    

    C++使用extern输出

    更多案例可以go公众号:C语言入门到精通

    展开全文
  • ,对变量来说,必须加extern才是引用声明,对函数来说,函数声明默认就是extern。 当不包含头文件而希望访问其他源文件的外部变量或者外部函数时时,都必须提前对他做引用声明,才能使用外部变量或函数,如: 在...

    两种声明:
    1.定义声明:简称定义,编译器给变量分配存储空间;
    2.引用声明:简称声明,编译器不分配存储空间,但可引用已定义的变量。
    声明可以多次,但是定义只能一次,对变量来说,必须加extern才是引用声明,对函数来说,函数声明默认就是extern。

    当在不include含有全局变量或函数定义的头文件时,而这个全局变量或函数在某个源文件存在定义,则使用它之前都必须提前对他做引用声明才能使用此外部全局变量或函数,如:
    在definition.cpp里定义声明
    int blem = 3;
    int fun(int a, int b)
    {
    return a + b;
    }
    在externdefinition.cpp做引用声明:
    extern int blem;
    int fun(int a,int b);
    这样就可以在externdefinition.cpp使用定义好的变量或函数了。
    definition.cpp如下:
    definition.cpp文件
    externdefinition.cpp如下:
    在这里插入图片描述
    运行结果如下:
    在这里插入图片描述
    需注意的是:
    1.如果在同一工程下的其他源文件中,使用外部全局变量而不加extern,则变成了一种定义声明,同一工程下,不允许同一变量的多个定义。
    2.如果在externdefinition.cpp中定义了局部变量,则将隐藏外部全局变量声明,此时可以通过作用域解析运算符(::)就可以使用变量的全局版本。
    3.局部变量的声明不能有extern的修饰,局部变量在运行时才在堆栈部分分配内存。
    4.extern对静态全局变量和静态全局函数不起任何作用。

    展开全文
  • C语言外部变量extern

    千次阅读 2014-06-12 21:54:27
    外部变量定义在函数之外,通过同一个名字对外部变量的所有引用(即使这种引用来自于单独编译的不同函数),实际上都是引用同一个对外部变量的所有引用(C标准中把这一性质称为外部链接)。因此外部变量可以在全局范围

    http://blog.csdn.net/pipisorry/article/details/30311253

    C语言的存储类型可分为:extern、auto、static、register。
    外部变量定义在函数之外,通过同一个名字对外部变量的所有引用(即使这种引用来自于单独编译的不同函数),实际上都是引用同一个对外部变量的所有引用(C标准中把这一性质称为外部链接)。因此外部变量可以在全局范围内访问。
    getChar.c:
    #include <stdio.h>
    #include <stdlib.h>
    extern char str[];//头文件中不用声明
    int index_str = 0;
    char getChar(){
    return str[index_str++];
    }

    getStr.c:
    #include <stdio.h>
    #include <stdlib.h>
    char str[255];
    /*get the testfile string */
    void getStr(char* filename){
    int index = 0;
    FILE* fp;
    if( (fp = fopen(filename,"r") ) == NULL){
    printf("open test_file fail !!!\n");
    exit(1);
    }
    while((str[index++] = getc(fp))!=EOF);
    str[index] = '\0';/*结尾标志*/
    fclose(fp);
    }

    from: http://blog.csdn.net/pipisorry/article/details/30311253

    ref: 

    展开全文
  • extern可以将其他文件的全局变量进行引用 main #include <stdio.h> #include <Calculate.h> /* 函数声明 */ int max(int num1, int num2); int main() { printf(" add:%d\n",add(2,3)); ...
  • 您需要在.h文件中声明它extern char cmdval...要详细说明,“extern”说,有一个外部变量,这将引用…如果你没有在某个地方声明cmdval,cmdval将永远不存在,而外部引用将永远不会引用任何东西.例:global.h:extern c...
  • const定义的全局变量不能被其他文件访问,必须加extern 才能被访问吗? C++ Prime 中文版第四版 P50, 拍个照,上图: 说明:只截取了这部分,因为后一部分我感觉Blog作者没写好。 转:...
  • extern外部变量

    2020-08-26 03:15:15
    不要用关键字extern创建外部定义,只用它来引用现有的外部定义. 外部变量只能初始化一次,且必须在定义该变量时进行。
  •  3、声明外部方法public static extern int GetCurrentDirectory(int a, StringBuilder b);  4、对外部方法操作 GetCurrentDirectory(300, pathstring); using System; using System.Collections.Generic;
  • extern外部方法使用

    2017-07-05 08:54:47
    外部方法使用C#简单例子 1、增加引用using System.Runtime.InteropServices; 2、声明和实现的连接[DllImport("kernel...3、声明外部方法public static extern int GetCurrentDirectory(int a, StringBuilder b);
  • 若一个变量需要在同一个工程中不同文件直接使用或修改,则需要将自变量做extern声明。只需将该变量在其中一个文件中定义,然后在另外一个文件中使用extern声明,且两个变量类型需一致。在单片机程序中,只需将extern...
  • 本文实例讲述了extern外部方法使用C#的方法。分享给大家供大家参考。具体分析如下: 外部方法使用C#步骤如下: 1、增加引用using System.Runtime.InteropServices; 2、声明和实现的连接[DllImport(“kernel32”, ...
  • extern声明外部变量

    2014-09-05 10:22:14
    如果在定义点之前的函数想引用外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”。表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。 【例...
  • 在C语言程序中,我们用extern关键字对某个变量作“外部变量申明”,表示该变量是一个已经定义的外部变量,编译器就会自动地在所有源文件里面查找该变量地定义。 一、在源文件中扩展全局变量的有效范围 全局变量的...
  • C语言外部变量(extern)的使用

    千次阅读 2012-11-08 20:40:34
    C语言的外部变量的定义和引用对初学者来说,是个难点.对外部变量的说明和定义不是一回事.对外部变量的说明,只是声明该变量是在...用extern声明外部变量,目的是可以在其它的文件中调用.具体使用见下面的例子: file1.c 
  • extern

    2013-11-21 09:22:33
    1.引用外部变量; extern int a; 2.定义为可以被外部变量使用的变量; extern int a = 0; 3.引用外部的函数; extern int abc(){} ; 这样的好处就不必把该函数所在的头文件包含进来。可以加速编译过程(加速预处理过程)...
  • extern声明外部变量

    千次阅读 2017-06-09 16:08:03
    extern声明外部变量 全局变量(外部变量)是在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为本文件中各个函数所引用。编译时将全局变量分配在静态...
  • 使用extern可以创建外部文件可以访问的全局变量。这样我们可以让多个类操控同一变量。通过它可以实现全局可变字符串。extern的使用方法: 1. 在需要初始化该变量的文件(如:func.m)中,定义变量NSMutableString *...
  • extern使用方法总结!

    万次阅读 多人点赞 2018-08-07 19:45:55
    一、问题 Extern的问题在于不知道这个...2、全局变量在外部使用声明时,extern关键字是必须的,如果变量没有extern修饰且没有显式的初始化,同样成为变量的定义,因此此时必须加extern,而编译器在此标记存储空间在...
  • 外部引用

    2014-11-20 11:57:31
    只要声明全局变量就默认 前面加extern(程序员可以不,但编译器默认加上) 若本文件 引用别的文件中的全局变量 一定要加上extern 声明一下 例如 #include "my_Fun.c" extern int b;//b是在my_Fun.c中声明了的一...
  • extern变量引用方法

    2021-04-20 23:09:57
    在主函数中声明这个需要引用的变量,在其变量基础上增加extern即可 再在主函数中引入新变量,讲刚刚声明的extern变量赋值给新变量,即新变量的值与某个点c文件的变量即关联起来等同在主函数中使用 ...
  •  (3)一定要注意引用那个头文件:#include "Global.h"。   //////////////////////////////////////////////////////////////////////////////////////////////////////////   下面是在Ctest_003View....
  • extern外部方法使用C#简单例子

    千次阅读 2014-12-21 23:11:22
    外部方法使用C#简单例子 1、增加引用using System.Runtime.InteropServices; 2、声明和实现的连接[DllImport(...3、声明外部方法public static extern int GetCurrentDirectory(int a, StringBuilder b); 4、对外部
  • C语言extern调用外部函数

    千次阅读 2016-12-22 21:26:16
    //外部声明common.c中的print_array_long函数 打印long型数组 extern void print_array_long( long arr[], long length); int main() { long a[ 5 ] = { 1 , 5 , 88 ,- 1 , 0 }; print_array_long(a, ...
  • } asm文件内容如下 global test extern a section .text test: mov eax,a ret 报错内容为 LNK2001 无法解析的外部符号 a LNK1120 1 个无法解析的外部命令 试过引用函数也会出现同样错误 上网搜半天也没搜到个解决...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,614
精华内容 13,445
关键字:

外部引用必须加extern