ich ein seltsames Verhalten in meinem Code gefunden haben (dies ist nur ein Ausschnitt):Ändern der Reihenfolge der Parameter löst Linkerfehler
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;
}
Als ich es kompilieren, erhalte ich eine Linker command failed with exit code 1
, aber nicht sehe irgendwas falsch damit.
Dann wechsle ich zufällig die Reihenfolge der Parameter von StringSplit
, und der Fehler ist festgelegt:
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;
}
Warum es das tut?
Hinweis: Die Reihenfolge der Auswertung von Funktionsargumenten ist in C++ nicht angegeben. –
@JesperJuhl True, aber das kann das Verhalten hier nicht beeinflussen, da die Argumente alle unabhängig sind. –
Was ist der Rest des Linker-Fehlers? – Niall