C++学习笔记,关于一个文件中的全局变量在其他文件中的使用
2017-09-08 11:51
771 查看
错误:多重定义 和 xxx变量已经在xxx.obj中定义
当在一个.cpp文件中定义了一个全局变量之后,需要在其他文件中使用时,需要用到关键字extern
当使用extern修饰一个变量时,例如extern int x; 代表当前变量x 的定义来自于其他文件,当进行编译时,会去其他文件里面找,
在当前文件仅做声明,而不是重新定义一个新的变量
main.cpp
#include <iostream>
#include "Some.h"
using namespace std;
extern int xx123;
int main() {
Some * some = new Some;
some->prntf();
xx123 = 50;
cout << "main:" << xx123 << endl;;
delete some;
system("PAUSE");
return 0;
}
Some.h
#ifndef SOME_H
#define SOME_H
class Some {
public:
Some();
~Some();
void prntf();
};
#endif // !SOME_H
Some.cpp
#include "Some.h"
#include <iostream>
using namespace std;
int xx123;
Some::Some() {
xx123 = 20;
}
Some::~Some() {
}
void Some::prntf() {
cout << "some:" << xx123 << endl;;
}
当一个全局变量需要多文件中使用的时候,应当把这个变量的定义放在.cpp文件中而不是.h文件。
当然,或许有其他方法,欢迎指教。
当在一个.cpp文件中定义了一个全局变量之后,需要在其他文件中使用时,需要用到关键字extern
当使用extern修饰一个变量时,例如extern int x; 代表当前变量x 的定义来自于其他文件,当进行编译时,会去其他文件里面找,
在当前文件仅做声明,而不是重新定义一个新的变量
main.cpp
#include <iostream>
#include "Some.h"
using namespace std;
extern int xx123;
int main() {
Some * some = new Some;
some->prntf();
xx123 = 50;
cout << "main:" << xx123 << endl;;
delete some;
system("PAUSE");
return 0;
}
Some.h
#ifndef SOME_H
#define SOME_H
class Some {
public:
Some();
~Some();
void prntf();
};
#endif // !SOME_H
Some.cpp
#include "Some.h"
#include <iostream>
using namespace std;
int xx123;
Some::Some() {
xx123 = 20;
}
Some::~Some() {
}
void Some::prntf() {
cout << "some:" << xx123 << endl;;
}
当一个全局变量需要多文件中使用的时候,应当把这个变量的定义放在.cpp文件中而不是.h文件。
当然,或许有其他方法,欢迎指教。
相关文章推荐
- C语言学习笔记----伊能C语言学习笔记----如何在一个文件中使用另一个文件中定义的变量呢??
- C++学习小记(使用定义在其他.cpp文件中的变量或函数)
- C/C++中关于地址、指针和引用变量的学习笔记(三) : 结构
- C/C++中关于地址、指针和引用变量的学习笔记(十) : 引用型变量
- c++多文件使用全局变量的方法
- C++ 和 C语言 头文件使用全局变量的异同
- C/C++中关于地址、指针和引用变量的学习笔记(七) : sizeof和typedef
- C++全局变量在多个源代码文件中的使用
- C/C++多文件共享全局变量时,使用extern的规范
- C++基础之两个头文件使用同一个变量会重复定义怎么办
- C/C++中关于地址、指针和引用变量的学习笔记(一)
- C++全局变量在多个源代码文件中的使用
- C/C++中关于地址、指针和引用变量的学习笔记(五) : 指针
- 关于在多文件项目中使用全局变量
- C/C++学习笔记23:全局变量与局部变量
- C\C++小知识: 如何引用一个已经定义过的全局变量 与 全局变量可不可以定义在可被多个.C文件包含的头文件中
- Linux学习笔记3--linux下库文件的创建和使用及其他
- 【菜鸟C++学习笔记】4.局部变量与全局变量
- C/C++中关于地址、指针和引用变量的学习笔记(八) : 命令行参数
- 关于一个工程中多个文件的相互调用的学习笔记(C语言)