C :与多个文件共享变量
C++: Share variables with Multiple files
我正在尝试在多个.cpp
文件中共享全局变量。我曾经使用过extern
关键字,但它不符合我想要的。
首先,我有四个文件为:
***** common.hpp *****
#ifndef COMMON_HPP
#define COMMON_HPP
#include <iostream>
void printVar();
void printVarfromA();
void setVar(char *str);
#endif
***** base.cpp *****
#include "common.hpp"
extern char *var;
void printVar(){
std::cout << var << std::endl;
}
void setVar(char *str){
var = str;
}
***** a.cpp *****
#include "common.hpp"
char *var = (char*)"This is var from A";
void printVarfromA(){
printVar();
}
***** main.cpp *****
#include "common.hpp"
int main(){
printVarfromA();
setVar((char*)"Var was Changed.");
printVarfromA();
return 0;
}
所有事情都很好,结果是:
This is var from A
Var was Changed.
正如我所期望的。
当我添加一个共享var
变量的新文件时,出现了问题,例如B.cpp
,现在它包含一行:
***** b.cpp *****
char *var;
此时ld returned 1 exit status
错误出现。
我尝试了几种方法并进行了很多搜索,但是我无法得到任何解决方案。
我的问题。如何在C 中的多个文件中共享变量?
要在多个单元中共享相同的变量,您可以在单元中使用extern
变量,除了主单位。
// In file a.cpp
#include "A.hpp"
extern int global_x;
void AsetX()
{
global_x = 12;
}
// In file b.cpp
#include "b.HPP"
extern int global_x;
void BsetX()
{
global_x = 10;
}
在主单元中,声明那里的实际变量。
#include "A.hpp"
#include "b.HPP"
int global_x;
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << global_x << std::endl;
AsetX();
std::cout << global_x << std::endl;
BsetX();
std::cout << global_x << std::endl;
return 0;
}
输出将为
0
10
12
希望可以帮助您。
相关文章:
- 无法通过头文件保存变量的值
- C++子类共享变量?
- 用于构建 cuda .so 文件(共享库)的生成文件
- 子目录之间的 CMAKE 共享变量
- 更改生成文件中变量的值
- 如何使用 ifstream 检查文件中变量的类型?
- 如何在不同的CMakeList.txt之间共享变量?
- OpenMP 任务看不到共享变量的更改
- OpenMP:当我按线程 ID 访问共享变量时,我是否需要一个关键部分
- 多个 OpenMP 线程读取(而不是写入)共享变量的性能成本?
- 无法从另一个函数访问文件范围变量的内容
- 在 pthread 中使用共享变量
- 提升线程问题,当一个线程与另一个线程没有相同的副本时如何共享变量?
- C :与多个文件共享变量
- C++跨文件共享的模板专用化定义
- 使用共享变量进行线程处理
- 更改生成文件中变量的值不起作用
- 如何在两个C++文件中共享变量
- 由2个文件共享的C++变量
- 跨多个.cpp文件共享全局变量(visual studio 2015)