Visual Studio 2010多个cpp文件

问题描述:

我对Visual Studio很新,我目前正在使用多个.cpp文件的项目。基本上我想在function.cpp中的main.cpp之外创建一个函数,并且该函数应该能够更改全局变量。然后我会在main.cpp中使用该函数。Visual Studio 2010多个cpp文件

我试着制作一个名为globals.h的头文件,并在其中放入静态变量。我在main和function.cpp中包含了globals.h,并且它被编译了,但是每当我在main函数中调用这个函数时,它什么也不做。 当我尝试在main.cpp中包含function.cpp时,编译时出现多个定义错误。

我在做什么错?提前致谢!

+1

你能不能显示一些代码 –

不要在头文件中使用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; 
+0

做了你所说的一切,现在它正在工作,非常感谢你:) –

+0

哇,我已经错过了静态这个词。你有漂亮的眼睛。 – 6D65

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

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

你function.h应该是什么样子,

的#ifndef FUNCTION_H

的#define FUNCTION_H

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

#ENDIF

+0

请解释如何输入“原型”和“多重定义”等长单词,但不能输入诸如“你”之类的小单词。我很好奇,因为很多人都这样做。 –

+0

经常发短信的习惯先生的后果.. – itsraining