最近碰到一个问题,想要在主文件中定义全局变量,其它文件也能够使用。通过查资料,找到了两种方法:一是在主文件的cpp中定义变量,在头文件.h中通过extern声明一下,要使用全局变量的其它cpp文件只要包含这个头文件就ok了;二是通过条件编译。
其中一是比较常用的方法,但是有一点一定要注意,就是头文件中只是声明,定义是在cpp文件中,千万不要弄反了!
下面之间看实现。。。。。。
方法一:
main.cpp:
#include <iostream>
#include "head.h"
using namespace std;
int a = 10;
int b = 20;
int main()
{
cout<<"this is main"<<a+b<<endl;
getData();
cout<<"this is main"<<a+b<<endl;
return 1;
}
sub.cpp:
#include <iostream>
#include "head.h"
using namespace std;
void getData()
{
a = 20;
cout<<"this is sub"<<a+b<<endl;
}
head.h:
extern int a;
extern int b;
void getData();
方法二:
main.cpp:
#include <iostream>
#define MAIN
#include "head.h"
using namespace std;
int main()
{
cout<<"this is main"<<a+b<<endl;
getData();
cout<<"this is main"<<a+b<<endl;
return 1;
}
sub.cpp:
同上
head.h:
#ifdef MAIN
int a = 10;
int b = 20;
#else
extern int a;
extern int b;
#endif
void getData();
分享到:
相关推荐
### 在C/C++项目中使用全局变量的方法 #### 概述 在开发C/C++项目时,有时需要在多个源文件之间共享数据或状态信息。全局变量作为一种简单且直观的数据共享方式,在某些场景下非常实用。然而,不当的使用全局变量...
在C/C++编程中,跨文件共享全局变量是一项常见的需求,尤其在大型项目或模块化设计中。全局变量能够在程序的任何地方被访问,而跨文件共享则意味着这些变量可以在不同的源文件之间传递数据。本Demo将展示如何在C/C++...
宏定义、结构体定义、函数声明以及全局变量定义放到一个head.h头文件中 函数的定义放到head.cpp中 main函数放到main.cpp中 然而却报错了,提示xxx变量在*.obj文件中已定义 问题出现的原因 为什么会出现这种...
- `errno.h`: 定义了错误码常量,如`EAGAIN`, `ENOTDIR`等,以及`errno`全局变量。 - `float.h`: 定义与浮点数相关的常量,如最大值、最小值、精度等。 - `fstream.h`: 用于文件输入/输出,如`ifstream`, `...
8. **命名空间(Namespaces)**:C++的命名空间可以防止全局变量和函数的命名冲突,"game.h"可能定义了一个或多个命名空间,将相关的类和函数组织在一起。 9. **类定义(Class Definitions)**:游戏开发中通常会...
- **典型用法**:通过`errno`全局变量来获取上一个系统调用的错误原因。 ##### 4. `float.h` - **功能描述**:定义了一系列与浮点数精度相关的宏,包括最大值、最小值等。 - **典型用法**:`FLT_MAX`, `DBL_EPSILON...
3. `<errno.h>`:定义了`errno`全局变量,用于存储最近调用的库函数返回的错误代码,帮助开发者识别和诊断错误。 4. `<float.h>`:定义了与浮点数相关的常量,如浮点数的最大值、最小值和精度等。 5. `<fstream.h>...
通过对`static`、`extern`以及全局变量引用的介绍和分析,我们可以清楚地认识到这些概念在C/C++编程中的重要性。合理地使用这些特性可以帮助我们更好地管理程序中的数据共享问题,同时也能提高程序的可读性和可维护...
* 不提倡使用全局变量,尽量不要在头文件中出现象 extern int value 这类声明。 4. 定义文件的结构 定义文件是 C++/C 程序中的一种重要组成部分,它们通常以“.cpp”为后缀,用于保存程序的实现(implementation)...
不能在头文件.h里面定义全局变量,如果头文件中可以定义全局变量,那么每个包含该头文件的文件里都会有该全局变量的定义.因为C语言的include是直接将文件嵌入到include这个地方的. ...
在C++编程中,全局变量是在程序的所有函数和类作用域之外定义的变量,它们在整个程序的生命周期内都存在。然而,当涉及到多个文件时,正确处理全局变量以避免重复定义的问题至关重要。以下是对全局变量在多文件环境...
2. **头文件与源文件**:头文件只包含声明,而源文件(`.cpp`或`.cc`)则包含实现。这种分离使得编译器可以分别处理它们,提高编译效率。 3. **using声明与包含**:`using namespace std;`可以简化代码,但过多使用...
避免在公共头文件中直接声明全局变量,除非你能确保不会引起冲突。 3. **主函数(main)冲突**: 程序通常从main函数开始执行,如果有多个源文件包含了main函数,编译器将无法确定哪个是程序的入口点,从而引发...
- 在预编译头文件(如`StdAfx.h`)中声明全局变量和函数。例如,声明`int g_Public_x;`和`void g_Public_f();`。 2. **实现全局变量和全局函数**: - 在某个cpp文件中定义这些全局变量和函数,例如`g_Public_x = ...
* 全局变量申明(带 extern 限定符) * 全局函数的申明 * 带 inline 限定符的全局模板函数的申明和定义 * 类的定义 * 类函数成员和数据成员的申明(在类内部) * 类定义内的函数定义(相当于 inline) * 带 static ...
在VC++ 6.0平台下,全局变量和全局函数是C++编程中常见的概念,它们在程序设计中扮演着重要角色。全局变量在整个程序范围内都可访问,而全局函数则是在任何作用域内都可以调用的函数。下面将详细讨论这两个主题。 #...
1. **头文件的作用**:在C++中,头文件主要用于存储函数声明、类定义和其他全局声明。它们允许你在不同的源文件之间共享代码,确保编译器知道如何处理那些在其他地方定义的元素。 2. **标准库头文件**:C++标准库...
C++中头文件相互包含的几点问题 在C++中,头文件的相互包含是一个常见的问题,特别是在多...在C++中,头文件的相互包含是一个需要注意的问题,通过使用类声明、全局变量和基类指针等方法,可以解决超前引用的问题。
3. **全局变量声明**:尽管不推荐,但有时会在`stdafx.h`中声明全局变量,以确保在整个项目中的可见性。 4. ** ATL 和 MFC 类**:对于使用Active Template Library (ATL) 或Microsoft Foundation Classes (MFC)的...