所以我的程序运行良好。编译,链接,运行,作品。然后,我决定在我的一个文件中添加一个简单的函数,如下所示:
#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
,它会再次起作用。我试过改名,还是不行。我试过用 just 替换它void randomFunctionName() {}
,仍然不起作用。我尝试将其设为非内联并将函数体放入 Utility.cpp,但仍然无法正常工作。我非常困惑。为什么添加一个简单的函数会搞砸链接器?