0
可以请别人解释我如何将功能随心连动@ functions.cpp到Main.cpp的解析的外部符号“INT randomNumber”
注:我想这两个文件functions.cpp和main.cpp中使用相同的变量from header.h
谢谢!
的main.cpp
#include "Header.h"
#include <iostream>
using namespace std;
int multi();
int printOutRanomdNumber();
int main()
{
cout << "Eneter a number you want to multiply" << endl;
cout << multi() <<endl;
cout << printOutRanomdNumber();
system("pause");
return 0;
}
header.h
#ifndef _HEADER_
#define _HEADER_
#include <iostream>
using namespace std;
extern int randomNumber;
int multi();
int printOutRanomdNumber();
#endif
functions.cpp
#include "Header.h"
#include <iostream>
using namespace std;
int multi()
{
int x;
cin >> x;
return(x=x*x);
}
int printOutRanomdNumber()
{
cout << "Please enter a random number" << endl;
cin >> randomNumber;
return (randomNumber);
}
'extern'的目的是允许单个对象在多个TU之间共享。你的建议对此目的不利。如果声明从头文件中删除,其他TU如何知道'extern'?有人可能会争辩说,该对象只在'functions.cpp'中需要,但是在那种情况下为什么要使用'extern'来开始?你提出的建议将解决这种情况下的编译和链接错误,但这不是解决这些问题的正确方法。 – 2013-03-05 04:40:24
谢谢你解决了这个问题!有没有办法在.h文件中定义一个变量并在两个.cpps中使用它? – alentor 2013-03-05 04:41:24
实际上是的,我没有意识到你可以定义extern关键字,也可以在同一范围内定义变量。所以是的,你可以在头文件中留下定义,让我更新答案。 – Tuxdude 2013-03-05 04:46:41