C++ 更改参数顺序可解决链接器错误
我在代码中发现了一些奇怪的行为这只是一个片段:C++ 更改参数顺序可解决链接器错误,c++,C++,我在代码中发现了一些奇怪的行为这只是一个片段: void StringSplit(string b,char splitchar,vector<string>& a) {} int main(int argc, const char * argv[]) { // insert code here... string b; getline(cin, b); vector<string> result1; StringSpli
void StringSplit(string b,char splitchar,vector<string>& a) {}
int main(int argc, const char * argv[]) {
// insert code here...
string b;
getline(cin, b);
vector<string> result1;
StringSplit(b, ' ', result1);
std::cout << result1[0];
return 0;
}
为什么会这样
,简言之,它表示架构x86_64有1个重复符号
错误的根本原因是重复的符号
函数有两个定义,相同的名称,相同的签名。如果函数定义在标题中,则需要内联和/或使用include保护。如果不是,如果它们是不同的函数,那么您应该为它们选择不同的名称 如果它们是相同的函数,那么在单个cpp中有定义,在头中有声明 我在项目的另一个文件中包含一个具有相同功能的文件
考虑到它们是您的项目,您也可以探索名称空间来帮助解决此问题。我猜您的更改强制进行了重建,这本来可以解决问题,如果没有原始问题的解决方案,几乎不可能诊断。你确定这不仅仅是重建效果吗?不是问题,而是std::cout@Niall太长了,简而言之,它说架构x86有一个重复符号\u 64你有两个函数定义,相同的名称,相同的签名。如果函数定义位于标题中,则需要内联和/或包含保护。如果不是,如果它们是不同的函数,那么您应该为它们选择不同的名称。如果它们是相同的函数,那么在单个cpp中有定义,在头中有声明。
void StringSplit(char splitchar,string b,vector<string>& a) {}
int main(int argc, const char * argv[]) {
// insert code here...
string b;
getline(cin, b);
vector<string> result1;
StringSplit(' ', b, result1);
std::cout << result1[0];
return 0;
}