Visual Studio 2010多个cpp文件

时间:2011-11-03 11:23:42

标签: c++ visual-studio-2010 file

我是Visual Studio的新手,我正在开发一个项目,我想在其中使用多个.cpp文件。基本上我想在function.cpp中的main.cpp之外创建一个函数,该函数应该能够更改全局变量。然后我将在main.cpp中使用该函数。

我尝试制作名为globals.h的标题并在其中加入静态变量。我在main和function.cpp中都包含了globals.h并且它已编译但是每当我在main中调用该函数时它都没有任何内容。 当我尝试在main.cpp中包含function.cpp时,我在编译时会遇到多个定义错误。

我做错了什么?提前谢谢!

2 个答案:

答案 0 :(得分:4)

不要在头文件中使用static个变量。当标题被“合并”在编译单元中时,标题中声明为static的所有变量仅限于编译单元内。您将无法在cpp文件中使用相同的全局变量。

这就是你的结构应该如何:

globals.h
------
extern int my_global_integer;


main.cpp
------
#include "globals.h"

// here use my_global_integer;

function.cpp
------
#include "globals.h"

// global variables have to be declared in exactly one compilation unit.
// otherwise the linker will complain that the variable is defined twice.
int my_global_integer = 0;

答案 1 :(得分:0)

“试着在main.cpp中包含function.cpp”是什么意思?你是否试图在main.cpp中使用function.cpp的函数?在这种情况下,你需要做的就是在你的main.cpp文件中包含function.h。

对于错误部分,请确保您已在#ifndef和#endif语法中提供了头文件的原型和数据变量。这应解决多重定义错误。

你的function.h应该是,

#ifndef FUNCTION_H

#define FUNCTION_H

//变量声明和原型声明在这里

#ENDIF