C++头文件里声明的变量如何能让所有.cpp文件都可以对它进行修改值,而且修改后值要保存起来

现在在一个工程里有几个.cpp文件,我现在想声明一个全局变量,然后每个.cpp都可以对其修改,比如1.cpp对它进行赋值为1,当2.cpp要对它操作时,此时该全局变量的值仍旧为1,这样该怎么声明?(我用static声明静态全局变量,可是不行,当1.cpp对它赋值为1后,在2.cpp里我调用它,它值仍然是默认的0)

帮我我再追加300分
用1.cpp修改那个变量,是在编译后执行的时候发生的。所以,那个变量在2.cpp中仍然是默认值
我就是想用什么办法来让它可以给.cpp们改动,且值可以保存起来

直接用extern 定义该变量皆可以了,我们工作当中都是这么写的
给个我们公司的程序的例子
例如ULONG g_1588State;
在另外一个文件里面extern ULONG g_1588State;
一下即可以了
extern
C/C++关键字
修饰变量,表示引用另一文件中的变量。
extern变量:用关键字extern说明的变量成为外部变量。
一个变量被说明为外部变量,其含义是告诉系统不必为其按一般变量那样分配内存,该变量已在这一局部的外边定义。
外部变量一般用于由多个文件组成的程序中,有些变量在多个文件中被说明,但却是同一变量,指出某一变量为外部变量就避免了重复分配内存。
如:
file.h:
void gogogo(int);

file1.cpp:
#include <iostream.h>
#include "file.h"
int main() {
extern int i;
gogogo(4);
cout << i;
}
file2.cpp
#include "file.h"
int i;
void gogogo(int k) { i = k * 2; }
结果:8
如果要在C++程序中引用C程序中的变量,要在extern后加"C"。在appmodul.cpp(MFC核心头文件)中有一个例子extern "C" int WINAPI,引用了crtexe.c里的WINAPI变量。
常用的 extern "C" 是把导出函数声明为C编译。由于C++编译器在编译的时候会造成其函数名的该变,在其他应用程序中导致函数不可调用,而C编译器则不会在编译后改变其函数名。这样如果用C编译的程序来调用该dll中的函数时,可能会造成找不到该函数。但若要实现函数的重载应该使用def文件。
代码中使用如下实现
#ifdef __cplusplus
extern "C"{
#endif
C函数声明;
#ifdef __cplusplus
}
#endif
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-14
你要明白一点是头文件是在预处理阶段被包含到.cpp文件中的,所以,你声明的那个变量在1.cpp和2.cpp编译之前就已经加到代码段里了。至于你用1.cpp修改那个变量,是在编译后执行的时候发生的。所以,那个变量在2.cpp中仍然是默认值
第2个回答  2009-05-14
你可以试下在头文件里面定义,然后CPP文件里面包含头文件使用
第3个回答  2009-05-14
这就简单了,在其中一个.cpp文件中定义全局变量,之后在头文件中将该全局变量声明为extern,如:
1.cpp
int g_var;

x.h
extern int g_var;

接下来,需要用到该全局变量的.cpp包含x.h头文件就OK了。
第4个回答  2009-05-14
很简单:
在1.cpp里定义此变量:如 int g_var = 0;
在其它用到的.cpp里声明为extern就OK了. 如:extern int g_var;

C++头文件里声明的变量如何能让所有.cpp文件都可以对它进行修改值,而且...
如果要在C++程序中引用C程序中的变量,要在extern后加"C"。在appmodul.cpp(MFC核心头文件)中有一个例子extern "C" int WINAPI,引用了crtexe.c里的WINAPI变量。常用的 extern "C" 是把导出函数声明为C编译。由于C++编译器在编译的时候会造成其函数名的该变,在其他应用程序中导致函数不可调用,而...

C++ 设置变量所有文件都可以访问并且共用该怎么弄
在其他的头文件中使用extern 声明;extern int a ;这样只要包含这个头文件就可以使用这个变量了。注意:a只能定义一次,不可以在其他文件中重复定义。

C++中如何在多文件的类中声明全局静态变量,使其在整个工程区中都能...
既然你想整个工作区都用那个变量,你就放到一个全局文件中,在.cpp中声明,在.h中加入extern声明,想使用该变量的时候,引用该文件就行,如果非要放到类里,你看看这个类构造的合适么?即这个构建这个类的功能是什么,这个变量是必须的么?需要暴露么?再者可以在构造函数中将此变量付给该类的变量 ...

C++ 怎么定义一个全局函数,能够在一个工程的所有文件中使用!
解决方法是,在log.h头文件的最开始加上:ifndef __LOG_H__define __LOG_H__\/\/log.h头文件的全部代码 endif \/\/ __LOG_H__这样log.h头文件无论被引用多少次都只会被解析一次.另外要说的这不是纯c++编程,这种用法属于c与c++的混合编程。还有一个需要注意的点,在编译器编译函数的时候为...

C++一个项目里有两个CPP文件,想在一个CPP文件里调用另一个CPP文件的计...
C++里面是有头文件的,标准的做法是:头文件里面放函数声明,cpp放函数具体实现。按照你的描述应该可以用一个.h头文件放全部函数的声明,然后在1.cpp里放一个函数,2.cpp里放另一个函数,我们把1.cpp作为程序的入口,作为数据源,在这里调用2.cpp里的函数,这个函数返回计算结果。注意,两个cpp都要...

C++书上写的是不能把变量定义在头文件中,头文件只能用来声明,为什么MFC...
那只是建议,并不是绝对的 通常情况头文件是只存放声明,而.cpp文件存放定义 但也有例外,比如模板类。如果头文件中存放变量的定义,而其他多个cpp文件包含了这个头文件,可能会导致该变量被重复定义而出现链接错误

C++一个头文件中申明的变量如何调用另一个头文件中变量的值
在另一个头文件里 声明这个变量 即 extern CGraph m_graph;另外,不建议在头文件里定义变量,只写变量声明,建议变量定义在源文件里进行,否则一旦头文件被多个文件包含,就会造成错误

C++\/C的项目里怎么共享“全局变量”呢?
全局变量定义时,如果不加static修饰,那么作用域就是整个项目,可以在任何一个文件中访问或修改。不过直接在其它文件中引用该变量时,会报未定义错误,需要在调用文件进行声明。声明格式为:类型 变量名;注意声明时不能有赋值操作,否则就会被认定为是新的定义,导致重复定义错误出现。下面是一个例子。在a...

c++多文件结构的头文件怎么弄?每个cpp文件都要写头文件吗?
也可以不这样 ,也可以几个共用一个头文件; 但是 ,在复杂程序中 ,为了方便找到相关的 ,声明以及函数体一般是一个CPP对应一个.h头文件,在修改了相关函数之后就不用在头文件中到处找相关声明了 例:Test.cpp对应Test.h;Open.cpp对应Open.h;那么必须在相应的cpp文件中预提示相应的头文件;在...

c++中头文件声明多个类,这些类的成员函数的实现为什么不能放在同一...
很有可能是文件建立错了,按你的想法,第一步:建立头文件,文件类型为.h,在头文件里声明这三个类,第二步,建立一个CPP文件,将类的定义写进这个CPP文件中,第三步,再建立一个CPP文件,写上main()函数,此时你的注意,你的预处理头文件,因包含“第二个文件.CPP”.在运行就行了。

相似回答