我有三个文件:
啊
#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
答.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);
}
我发现错误是我的函数menu(;已经定义了两次:
1>B.obj : 错误 LNK2005: "int __cdecl menu(void(" (?menu@@YAHXZ( 已在 A.obj 中定义 1>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
从 a.cpp 中删除包含 b.cpp,创建一个名为 b.h 的包含文件,在其中定义 menu(( 函数。
问题是,按照你写的方式,a.cpp 将在其目标文件上编译一个 menu(( 函数,还有 b. 然后链接器将不知道你想要什么 menu(( 函数(即使它们相等(。