C++ Problem nur 'int main' funktioniert.

03/06/2013 15:28 xXxNoMenuxXx#1
Immer wenn ich verushce eine neue Funktion einzubauen, bekomme ich die fehlermeldung
Quote:
1>------ Erstellen gestartet: Projekt: die motherfucker, Konfiguration: Debug Win32 ------
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".
1>C:\Users\Marvin\documents\visual studio 2010\Projects\dieexe\Debug\dieexe.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Also, wenn ich das so stehen habe
Quote:
int main()
{
}
funktioniert alles.

Erst wenn ich eine neue Funktion haben will , z.B.
Quote:
int beispiel()
{
}

oder

void beispiel()
{
}
Bekomme ich immer diese dreckige fehlermeldung!

Wie löse ich mein Problem??

Das Problem habe ich erst, seit dem ich meinen PC neu formatiert habe.
03/06/2013 16:38 Kosic#2
Wenn du eine Funktion nach der main erstellen willst, musst du sie vor der main deklarieren.

z.b.
Code:
void funktion_test();

int main()
{
      //CODE
]

void funktion_test()
{

}
03/06/2013 16:45 xXxNoMenuxXx#3
Quote:
Originally Posted by Kosic View Post
Wenn du eine Funktion nach der main erstellen willst, musst du sie vor der main deklarieren.

z.b.
Code:
void funktion_test();

int main()
{
      //CODE
]

void funktion_test()
{

}
ist mir schon klar.
Aber ich muss die main-Funktion doch auch nicht main nennen?
Aber wenn ich das nicht tuhe bekomme ich diese dumme meldung.
Falls ich ein neues Element z.B. "Rechner.cpp" erstelle und sie dann include, bekomme ich auch eine fehlermeldung und zwar
Quote:
1>------ Erstellen gestartet: Projekt: _-_-_-_, Konfiguration: Debug Win32 ------
1> main.cpp
1>Rechner.obj : error LNK2005: "void __cdecl Rechner(void)" (?Rechner@@YAXXZ) ist bereits in main.obj definiert.
1>C:\Users\Marvin\documents\visual studio 2010\Projects\_-_-_-_\Debug\_-_-_-_.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
03/06/2013 18:07 snow#4
Könntest du evtl. den Source Code, der zum Fehler führt, posten? Das sieht so aus als hättest du die Funktion Rechner() mehrmals definiert.
03/06/2013 19:53 marykillsjane#5
Quote:
Originally Posted by xXxNoMenuxXx View Post
ist mir schon klar.
Aber ich muss die main-Funktion doch auch nicht main nennen?
Aber wenn ich das nicht tuhe bekomme ich diese dumme meldung.
Falls ich ein neues Element z.B. "Rechner.cpp" erstelle und sie dann include, bekomme ich auch eine fehlermeldung und zwar
1. Doch natürlich musst die die main Funktion main nennen wie soll der Compiler sonst wissen wo die Hauptfunktion ist womit er beginnen soll?
2.Wenn du eine Headerdatei welche mittels #include eingebunden werden soll erstellst muss diese auch in eine Headerdatei und nicht in eine .Cpp Datei.
03/06/2013 21:06 xXxNoMenuxXx#6
Quote:
Originally Posted by marykillsjane View Post
1. Doch natürlich musst die die main Funktion main nennen wie soll der Compiler sonst wissen wo die Hauptfunktion ist womit er beginnen soll?
2.Wenn du eine Headerdatei welche mittels #include eingebunden werden soll erstellst muss diese auch in eine Headerdatei und nicht in eine .Cpp Datei.
1. Vorher hatte ich auch NIE irgendwo drinne main stehen, weder als funktion noch sonst irgendwo.
2.Danke :p
03/06/2013 21:40 Raz9r#7
Die Signatur der main-Funktion ist laut Standard immer eine der Folgenden:
(1) int main();
(2) int main(int argc, char *argv[]);
(3) int main(int argc, char **argv);

Manche Compiler benutzen außerdem:
(4) int main(cv-qualified int argc, cv-qualified char *argv[]);
(5) int main(cv-qualified int argc, cv-qualified char **argv);

Der Rückgabewert der main-Funktion ist optional; zurückgegeben wird dann 0.

Kleiner Tipp am Rande: argv kann als ein Array mit der Größe argc aufgefasst werden, kann also in C++ über
std::vector<char *> args(argv, argv + argc);
sehr elegant ausgedrückt werden.
03/06/2013 23:33 Delinquenz#8
Quote:
2.Wenn du eine Headerdatei welche mittels #include eingebunden werden soll erstellst muss diese auch in eine Headerdatei und nicht in eine .Cpp Datei.
Jap. Niemals eine .cpp inkludieren.

Erstelle als Beispiel eine main.cpp, functions.h und functions.cpp.

In der main.cpp inkludierst du die functions.h

In der functions.h packst du nen Include-Guard und die Prototypes/Deklarationen deiner Funktionen rein.

In functions.cpp inkludierst du functions.h und packst die Funktionen rein.