Так что моя программа работает нормально.Компиляция, компоновка, запуск, работает.Затем я решаю добавить в один из моих файлов простую функцию, например:
#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 ++ выдает одну из следующих ошибок для каждого файла, который #include этот:
./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, но все еще не работает.Я очень смущен.Зачем добавлять одну простую функцию, чтобы испортить компоновщик?