所以我的程序运行正常.编译,链接,运行,工作.然后,我决定在我的一个文件中添加一个简单的函数,如下所示:
#ifndef UTILITY_HPP #define UTILITY_HPP /* #includes here. There's no circular include,I've checked. */ namespace yarl { namespace utility { (several function declarations and definitions) bool isVowel(const char c) { if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') return true; else return false; } } } #endif
该函数定义是我对代码所做的唯一更改.其他一切与现在完全一样.什么都没有叫它.我编译,它无法链接,g为每个#includes这个文件的文件给出了其中一个错误:
./obj/Feature.o: In function `yarl::utility::isVowel(char)': /home/max/Desktop/Development/Yarl Backup/yarl v0.27/src/Utility.hpp:130: multiple definition of `yarl::utility::isVowel(char)' ./obj/Events.o:/home/max/Desktop/Development/Yarl Backup/yarl v0.27/src /Utility.hpp:130: first defined here ./obj/GameData.o: In function `yarl::utility::isVowel(char)':
如果我评论出isVowel,它会再次起作用.我已经尝试重命名它,仍然无法正常工作.我尝试用void randomFunctionName(){}替换它,仍然无法正常工作.我试过让它非内联并将函数体放在Utility.cpp中,仍然无法正常工作.我非常困惑.为什么添加一个简单的函数会搞砸链接器?