zoukankan      html  css  js  c++  java
  • extern关键字

    extern可用来修饰变量、函数和进行链接指定 extern "C"。

    1、extern用于修饰全局变量和函数 

    (1)在同一个文件中extern 修饰全局变量

          如果全局变量不在文件的开头定义,有效的作用范围将只限于其定义处到文件结束。如果在定义点之前的函数想引用该全局变量, 则应该在引用之前用extern关键字对该变量做“全局变量声明”,表示该变量是一个已经定义的全局变量。

    #include <stdio.h>
    int max(int x,int y);
    int main(void)
    {
        int result;
        /*外部变量声明*/
        extern int g_X;
        extern int g_Y;
        result = max(g_X,g_Y);
        printf("the max value is %d
    ",result);
        return 0;
    }
    /*定义两个全局变量*/
    int g_X = 10;
    int g_Y = 20;
    int max(int x, int y)
    {
        return (x>y ? x : y);
    }    
    

    (2)在不同的文件中用extern修饰全局变量

       如果在一个源文件中想引用另一个源文件中的全局变量,同样只需在引用变量的文件中用extern关键字加以声明即可;

    /****max.c****/
    #include <stdio.h>
    /*外部变量声明*/
    extern int g_X ;
    extern int g_Y ;
    int max()
    {
        return (g_X > g_Y ? g_X : g_Y);
    }
    
    /***main.c****/
    #include <stdio.h>
    /*定义两个全局变量*/
    int g_X=10;
    int g_Y=20;
    int max();
    int main(void)
    {
        int result;
        result = max();
        printf("the max value is %d
    ",result);
        return 0;
    }

    (3)如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有明显的区别:
      extern int f(); 和int f();

    2、extern "C"

       extern "C" void fun(int a, int b);告诉编译器在编译fun函数名时按照C的规则而不是C++的规则;

  • 相关阅读:
    数据结构与算法之“图”
    数据结构与算法之队列、栈
    数据结构与算法之二叉搜索树
    ue mobile GI
    ue ios 用xcode 断点debug手机 显示call stack的环境搭建 /instrument 显示线程名/stat filestart
    ue 后效里宏的设置
    ue上 sceneColorMobile 在android 和ios上表现不同的问题
    减少ue编译shader的时间
    ue 搭建android/ios联机 debug环境
    对曝光的理解 autoExposure
  • 原文地址:https://www.cnblogs.com/dingou/p/10447549.html
Copyright © 2011-2022 走看看