我有三个文件:
A.H
#ifndef A_H
#define A_H
#include <iostream>
#include <string>
using namespace std;
//FUNCTIONS
void main();
int menu();
void inputData();
void processData();
void storeData();
// void viewData();
#endif
A.cpp
#include "B.cpp"
void main() {
int uChoi;
uChoi = menu();
if (uChoi = 0) {
cout << "Hi" << endl;
// inputData();
}
else {
cout << "Bye" << endl;
// viewdata();
}
}
B.cpp
#include "A.h"
int menu() {
int c;
int userChoice;
bool validChoice = false;
do {
cout << "Please make your choice." << endl;
cin >> userChoice;
if (userChoice == 0) {
c = 0;
return c;
}
else if (userChoice == 1) {
c = 1;
return c;
}
else {
validChoice = true;
cout << "That is not a valid choice." << endl;
}
}
while(validChoice = true);
}
我到达了我的功能菜单();已经定义了两次:
1&gt; B.obj:错误LNK2005:“int __cdecl menu(void)”(?menu @@ YAHXZ)已在A.obj中定义 1&gt; S:\ Documents \ Visual Studio 2012 \ Projects \ Database \ Debug \ Database.exe:致命错误LNK1169:找到一个或多个多重定义的符号 ==========构建:0成功,1个失败,0个最新,0个跳过==========
使用错误代码:
错误2错误LNK2005:“int __cdecl menu(void)”(?menu @@ YAHXZ)已在A.obj S中定义:\ Documents \ Visual Studio 2012 \ Projects \ Database \ Database \ B.obj Database
请在我的代码中发现任何帮助或错误,欢呼:)
使用IDE Microsoft Visual Express 2012
答案 0 :(得分:0)
从a.cpp中删除include b.cpp,创建一个名为b.h的包含文件,在其中定义menu()函数。
问题在于,在您编写的方式中,a.cpp将在其上编译一个menu()函数的目标文件,并且b。然后链接器将不知道你想要什么menu()函数(甚至强制它们是相同的)。