zoukankan      html  css  js  c++  java
  • extern 使用

    对于变量:
    extern int a;      //声明一个全局变量a
    int a;                //定义一个全局变量a
    extern int a =0 ;//定义一个全局变量a 并给初值。一旦给予赋值,一定是定义,定义才会分配存储空间。
    int a =0;           //定义一个全局变量a,并给初值,
    声明之后你不能直接使用这个变量,需要定义之后才能使用。
    第三条等于第四条,都是定义一个可以被外部使用的全局变量,并给初值。
    定义只能出现在一处。也就是说,不管是int a;还是int a=0;都只能出现一次,而那个extern int a可以出现很多次。
    引用一个全局变量的时,要声明extern int a;这时候extern不能省略,因为省略了,就变成int a;这是一个定义,不是声明。
     
    编译阶段,各个文件中定义的全局变量相互是不透明的,编译A时觉察不到B中也定义了i,同样,编译B时觉察不到A中也定义了i。
    链接阶段,要将各个文件的内容“合为一体”,因此,如果某些文件中定义的全局变量名相同的话,在这个时候就会出现错误,也就是上面提示的重复定义的错误。
    因此,各个文件中定义的全局变量名不可相同。
    链接阶段,各个文件的内容(实际是编译产生的obj文件)是被合并到一起的,因而,定义于某文件内的全局变量,在链接完成后,它的可见范围被扩大到了整个程序。
     
    对于函数:
    如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有明显的区别:
    extern int f(); 和int f();
    当然,这样的用处还是有的,就是在程序中取代include “*.h”来声明函数,在一些复杂的项目中,可以在所有的函数声明前添加extern修饰。但是要注意函数名不要重复。
  • 相关阅读:
    第一个spring MVC
    AOP切点相关
    设计模式详解
    Spring基本原理模拟(IoC部分)
    AOP常用注解
    Integer.valueOf与Integer.parseInt的小疑惑
    IE10与IMG图片PNG显示不了 WP中的WebBrowser中无法查看PNG格式的图片
    去除Coding4Fun中MessagePrompt的边框(Border)
    windows phone 中的TextBlock的一些特性(TextWrapping,TextWrapping)
    九度 找出两个只出现了一次的数字
  • 原文地址:https://www.cnblogs.com/geowu/p/5099305.html
Copyright © 2011-2022 走看看