声明:在某个头文件1.h(可以在同一文件中或同一程序的不同文件中出现多次 );
定义:在任何一个源文件x.cpp(只能定义一次!#include<1.h>) ;
使用:要使用这个全局变量,只要包含1.h就行了。
在全局域中定义的对象 如果没有指定显式的初始值 则该存储区被初始化为 0 因此下面两个定义中 var1和 var2有相同的初始值 0
int var1 = 0;
int var2;
关键字extern为声明但不定义一个对象提供了一种方法 实际上它类似于函数声明承诺了该对象会在其他地方被定义 或者在此文本文件中的其他地方 或者在程序的其他文本文件中 例如
extern int i;
对程序来说是一个 保证 表示在其他某个地方存在一个如下所示的定义
int i;
extern声明不会引起内存被分配 它可以在同一文件中或同一程序的不同文件中出现多次 典型情况下 全局对象的声明只在公共的头文件中出现一次
当一个程序文件需要引用这个全局对象时 它可以包含这个头文件
// 头文件
extern int obj1;
extern int obj2;
// 文本文件
int obj1 = 97;
int obj2;
既指定了关键字 extern 又指定了一个显式初始值的全局对象声明将被视为该对象的定义 编译器将会为其分配存储区 而且该对象后续的定义都被标记为错误 例如
extern const double pi = 3.1416; // 定义
const double pi; // 错误: 重复定义 pi
关键字 extern也可以在函数声明中指定 惟一的影响是将该声明的隐式属性 在其他地方定义 变为显式的 这样的声明有下列形式
extern void putValues( int*, int )
一般是在一个源文件如1.cpp里定义变量, 如 CString str;(这是定义,只能有一个定义)
在其他文件中要用使用时,可以在头文件如1.h里声明: extern CString str;(声明,可以有多处),然后include “1.h”就行了,不用再定义,否则定义重复,也可以不用声明;include “1.h”中已经声明。
例如:
-----------------------------------------
1.h 源码:
extern CString str;//这是声明,表示这个变量在其他文件里有定义,这里是1.cpp.一定要有个文件里有它的定义。
……
------------------------------------------
1.cpp 源码:
include “1.h”
……
CString str; // 定义
……
-----------------------------------------
2.cpp 源码
include “1.h” // 声明了变量CString str,并且在 1.cpp里定义了
str = "……"; // 直接使用,include “1.h”中已经声明。
-----------------------------------------
.h文件 里若没有extern ,表示定义;
.cpp文件里有相同定义就是重复定义了;
.h文件里加了extern 后,表示声明,要有地方有它的定义(实现)。
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2009-08/21129.htm
分享到:
相关推荐
但是,当涉及到多个源文件时,单纯地在每个文件中声明全局变量是无法实现跨文件共享的,因为每个源文件都有自己的作用域。 要跨文件共享全局变量,我们需要遵循以下步骤: 1. **定义全局变量**:在其中一个源文件...
### 在C/C++项目中使用全局变量的方法 #### 概述 在开发C/C++项目时,有时需要在多个源文件之间共享数据或状态信息。全局变量作为一种简单且直观的数据共享方式,在某些场景下非常实用。然而,不当的使用全局变量...
在C语言中使用extern 关键字来定义全局变量的时候,我们需要在.h文件和.c文件中重复定义,这种重复,导致了出错几率的增加。 今天,在整理自己的代码的时候,考虑到我写的代码从一至终都是在一个cpp文件里面。于是,...
### static、extern以及全局变量的引用(C/C++) #### 一、引言 在C/C++编程语言中,变量的存储类型对于程序的行为有着重要的影响。存储类型的正确选择不仅能够帮助开发者更好地组织代码,还能有效地减少内存资源...
在C/C++编程过程中,经常会进行变量和函数的声明和定义,各个模块间共用同一个全局变量时,此时extern就派上用场了。 定义 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此...
调用汇编全局变量类似于调用函数,需要先在汇编中声明其全局性,然后在C/C++中使用`extern`声明并引用。例如,在汇编中定义全局变量`var`: ```assembly .bss _var,1 .global _var ``` 在C/C++中调用这个变量: `...
1、声明全局变量 2、声明函数 今天我们只谈extern,什么const、static之类等等与之相关或不相关的一律忽略,下面就分别对以上两种情况一一讲解 声明和定义 既然提到extern声明变量,那我们就必须搞清楚声明和定义的...
- **库的使用**:当使用C语言编写的库时,`extern "C"`声明是必须的,它保证了正确的符号匹配,使得C++代码能够调用C库中的函数和使用其中的变量。 #### 3. C语言高效编程的几招 在嵌入式系统中,效率至关重要,...
全局变量可以在多个`.C`文件中通过`static`关键字声明,这样每个文件都有自己的实例,互不影响,从而避免了命名冲突和链接错误的问题。 #### 无限循环的表达式 `for( ; 1; )` 表达式等同于 `while(1)`,两者都表示...
`extern` 关键字在C/C++语言中用于声明全局变量或者外部变量。当你在一个源文件中定义了一个全局变量,而在其他源文件中想要使用这个变量时,由于编译器默认每个源文件都是独立的,所以它不知道这个变量的存在,这时...
C/C++中的static和extern关键字是两个重要的关键字,它们在变量和函数的声明和使用中扮演着重要的角色。 static关键字 static关键字可以用于修饰局部变量,以扩展局部变量的生存期。被static关键字修饰的局部变量...
在C++编程中,`extern "C"`是一个特殊的声明,用于指示编译器按照C语言的规则处理特定的函数和全局变量,而不是按照C++的标准方式进行。这是因为C++支持函数重载和名称修饰(name mangling),而C语言不支持这些特性...
- 若希望全局变量仅在一个C文件中访问,将其修改为静态全局变量,有助于降低模块间的耦合度。 - 若全局变量仅由单个函数访问,可以将其改为该函数的静态局部变量,同样能降低耦合度。 - 设计和使用访问静态变量的...
1. **声明全局变量**:在文件A中定义了一个全局变量,在文件B中想要使用这个变量,就需要在文件B中用`extern`声明。例如: ```c // file1.c static int a = 1; // file2.c extern int a; ``` `extern`使得文件B知道...