首先,这可能会很混乱,因为我对编程很新 好吧,我正在进行一场RPG比赛,我希望我的所有武器都在一个名为Weapons.cpp的文件中 我这样做是为了让我在名为common.h的头文件中获得所有全局变量,例如“weaponDamage”和“weaponName”,以便我可以从main和.cpp文件中访问和操作这些变量。但问题是它似乎无法在我的标题中找到那些变量和函数。
以下是一些代码:
common.h:
#include <string>
#ifndef COMMON_H_INCLUDED
#define COMMON_H_INCLUDED
//global variables
extern int pureDamage = 0;
extern int pureHealth = 0;
extern int weaponDamage;
extern int armorDefense;
extern int totalDamage = pureDamage + weaponDamage;
extern int totalHealth = pureHealth + armorDefense;
extern int totalLuck;
extern string starsign;
extern string weaponName;
//all weapons
void weaponSwordIron();
void weaponSwordGold();
void weaponSwordSwordOfTheHeavens();
void weaponBowSimple();
void weaponBowLongBow();
void weaponBowThunder();
void weaponStaffStaffOfFlames();
void weaponStaffStaffOfLightning();
void weaponStaffStaffOfAssKicking();
#endif // COMMON_H_INCLUDED
Weapons.cpp:
#include <iostream>
#include <string>
#include <common.h>
using namespace std;
void weaponSwordIron()
{
int weaponDamage = 5;
string weaponName = "Iron Sword";
}
void weaponSwordGold()
{
int weaponDamage = 8;
string weaponName = "Gold Sword";
}
void weaponSwordSwordOfTheHeavens()
{
int weaponDamage = 15;
string weaponName = "Sword Of The Heavens";
}
void weaponBowSimple()
{
int weaponDamage = 5;
string weaponName = "Simple Bow";
}
void weaponBowLongBow()
{
int weaponDamage = 8;
string weaponName = "Long Bow";
}
void weaponBowThunder()
{
int weaponDamage = 15;
string weaponName = "Thunder Bow";
}
void weaponStaffStaffOfFlames()
{
int weaponDamage = 5;
string weaponName = "Staff Of Flames";
}
void weaponStaffStaffOfLightning()
{
int weaponDamage = 8;
string weaponName = "Staff Of Lightning";
}
void weaponStaffStaffOfAssKicking()
{
int weaponDamage = 15;
string weaponName = "Staff Of Ass Kicking";
}
和我的主要部分,名为GiveWeapon()
的函数:
void GiveWeapon()
{
system("cls");
if (starsign == "mage")
{
weaponSwordIron();
cout << weaponDamage;
cout << weaponName;
}
else if (starsign == "warrior")
{
weaponBowSimple();
}
else if (starsign == "archer")
{
weaponStaffStaffOfFlames();
}
else
{
ChooseStarsign();
}
AssignAttributes();
}
是的,我确实记得包括common.h
现在我的IDE Code::Blocks
出现的错误是:error:common.h:没有这样的文件或目录
我不知道为什么会这样,所以请帮忙。
很抱歉这篇长篇文章并提前致谢。
答案 0 :(得分:2)
使用"common.h"
代替<common.h>
。
有角度的用于库文件。
答案 1 :(得分:0)
您应该使用"common.h"
而不是< common.h>
答案 2 :(得分:0)
weopens.cpp几乎是无意义的。
我尝试编译以下内容:
void a() {
int b = 5; }
int main()
{
a();
return 0;
}
和g ++不喜欢这个想法。
答案 3 :(得分:0)
你的“common.h”放在哪里?您必须使用“Weapons.cpp”从文件夹中指定它们的相对路径。
第二,在函数中定义局部变量。您的Weapons.cpp文件必须如下所示:
#include <iostream>
#include <string>
#include "relative/path/to/common.h"
//global variables
int pureDamage = 0;
int pureHealth = 0;
int weaponDamage;
int armorDefense;
int totalDamage = pureDamage + weaponDamage;
int totalHealth = pureHealth + armorDefense;
int totalLuck;
string starsign;
string weaponName;
using namespace std;
void weaponSwordIron()
{
weaponDamage = 5;
weaponName = "Iron Sword";
}
void weaponSwordGold()
{
weaponDamage = 8;
weaponName = "Gold Sword";
}
...
答案 4 :(得分:0)
除了其他人提到的标题位置问题和局部变量阴影之外,我认为你还会遇到多个定义错误的问题:
extern int pureDamage = 0;
此声明的初始化程序会覆盖extern
,因此不仅会声明此变量,还会在包含此标头的任何编译单元中定义此变量。您的链接器会抱怨。
如果你真的想在多个文件中使用全局变量,你需要在源文件中定义和初始化变量一次并在其中声明它extern
(没有初始值设定项)头文件。但是,const
变量是一个例外。