| Autor |
Nachricht |
Haimi
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.03.2009
Beiträge: 67
|
Haimi Mitglied
16:46:57 12.03.2010 Titel: |
Fehlermeldung beim kompilieren |
Zitieren |
Huhu,
folgendes Programm will ich kompilieren und bekomme diese Fehlermeldung:
[Linker error] undefined reference to `WinMain@16'
Ich weiß nicht wie ich das umgehen kann... als Compiler benutze ich Dev C++
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <stdio.h>
#include <stdlib.h>
char passwort[] = { "gizmo" };
int pwcheck (char string[])
{
int i;
for (i=0 ; string[i] != '\0' ; i++)
{
if (string[i] != passwort[i])
{
return 0; //falsches PW
}
else
{
return 1; //PW richtig
}
}
int main (void)
{
char name[20];
char pweingabe[20];
int check;
printf ("--- Login ---\n");
printf ("Name: ");
fgets (name,20,stdin);
printf ("Passwort: ");
fgets (pweingabe,20,stdin);
//PW vergleichen
check = pwcheck (pweingabe);
if (check == 1)
{
printf ("Passwort akzeptiert");
}
else
{
printf ("Falsches Passwort");
}
}
getchar ();
return 0;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <stdio.h>
#include <stdlib.h>
char passwort[] = { "gizmo" };
int pwcheck (char string[])
{
int i;
for (i=0 ; string[i] != '\0' ; i++)
{
if (string[i] != passwort[i])
{
return 0; //falsches PW
}
else
{
return 1; //PW richtig
}
}
int main (void)
{
char name[20];
char pweingabe[20];
int check;
printf ("--- Login ---\n");
printf ("Name: ");
fgets (name,20,stdin);
printf ("Passwort: ");
fgets (pweingabe,20,stdin);
//PW vergleichen
check = pwcheck (pweingabe);
if (check == 1)
{
printf ("Passwort akzeptiert");
}
else
{
printf ("Falsches Passwort");
}
}
getchar ();
return 0;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <stdio.h>
#include <stdlib.h>
char passwort[] = { "gizmo" };
int pwcheck (char string[])
{
int i;
for (i=0 ; string[i] != '\0' ; i++)
{
if (string[i] != passwort[i])
{
return 0; //falsches PW
}
else
{
return 1; //PW richtig
}
}
int main (void)
{
char name[20];
char pweingabe[20];
int check;
printf ("--- Login ---\n");
printf ("Name: ");
fgets (name,20,stdin);
printf ("Passwort: ");
fgets (pweingabe,20,stdin);
//PW vergleichen
check = pwcheck (pweingabe);
if (check == 1)
{
printf ("Passwort akzeptiert");
}
else
{
printf ("Falsches Passwort");
}
}
getchar ();
return 0;
} | |
|
|
|
|
 |
µngbd
Unregistrierter
|
µngbd Unregistrierter
17:04:14 12.03.2010 Titel: |
|
Zitieren |
| Haimi schrieb: | folgendes Programm will ich kompilieren und bekomme diese Fehlermeldung:
[Linker error] undefined reference to `WinMain@16'
|
Das glaub ich dir nicht so recht, weil du ein Choas mit den geschwungenen Klammern hast. Deshalb sollte der Linker eigentlich gar nicht erst zu Wort kommen.
Wenn das Programm dann durch den Compiler geht, bist einer MS-Erfindung aufgesessen, nämlich dass der Einsprungspunkt für Windows-Programme anders heisst als üblich. Dagegen hilft meistens, das Ding als "Konsolenanwendung" oder so zu bezeichnen. Ausserdem solltest du das lesen:
http://www.c-plusplus.de/forum/viewtopic-var-t-is-237002.html
Eigentlich kein C-Problem, deshalb das falsche Forum. Abwarten und Tee trinken, man darf gespannt sein, welches das richtige ist.
|
|
|
|
 |
noobLolo
Unregistrierter
|
noobLolo Unregistrierter
17:05:38 12.03.2010 Titel: |
|
Zitieren |
erstmal würd ich z.45,46,47 entfernen...
heißt die main() unter windows nicht _tmain() oder ist das nur unter vc++ so
lg lolo |
|
|
|
 |
boonlolo
Unregistrierter
|
boonlolo Unregistrierter
17:08:11 12.03.2010 Titel: |
|
Zitieren |
| noobLolo schrieb: | | erstmal würd ich z.45,46,47 entfernen... |
oder z.43 |
|
|
|
 |
µngbd
Unregistrierter
|
µngbd Unregistrierter
17:14:51 12.03.2010 Titel: |
Re: Fehlermeldung beim kompilieren |
Zitieren |
Weil wir hier doch gerne über C reden:
| Haimi schrieb: | | C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | for (i=0 ; string[i] != '\0' ; i++)
{
if (string[i] != passwort[i])
{
return 0; //falsches PW
}
else
{
return 1; //PW richtig
}
} // <-- von mir
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | for (i=0 ; string[i] != '\0' ; i++)
{
if (string[i] != passwort[i])
{
return 0; //falsches PW
}
else
{
return 1; //PW richtig
}
} // <-- von mir
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | for (i=0 ; string[i] != '\0' ; i++)
{
if (string[i] != passwort[i])
{
return 0; //falsches PW
}
else
{
return 1; //PW richtig
}
} // <-- von mir
| |
|
Das geht auch kürzer:
| C/C++ Code: | for (i=0 ; string[i] != '\0' ; i++)
return string[i] == passwort[i];
| |
| C/C++ Code: | for (i=0 ; string[i] != '\0' ; i++)
return string[i] == passwort[i];
| |
| C/C++ Code: | for (i=0 ; string[i] != '\0' ; i++)
return string[i] == passwort[i];
| |
Da fällt noch deutlicher auf, dass da irgendwas nicht stimmt, weil das nämlich eine Schleife ist, aus der immer beim ersten Durchlauf rausgesprungen wird.
|
|
|
|
 |
seldon
Unregistrierter
|
seldon Unregistrierter
17:48:44 12.03.2010 Titel: |
|
Zitieren |
Was die Zeilenlöschung angeht...eigentlich wäre es sinnvoller, Zeile 43 zwischen Zeile 18 und 19 zu verschieben. So, wie's jetzt da steht, ist main eine lokale Funktion innerhalb pwchecks. Das ist auch der Grund für den Linkerfehler. |
|
|
|
 |
Haimi
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.03.2009
Beiträge: 67
|
Haimi Mitglied
18:29:42 12.03.2010 Titel: |
|
Zitieren |
vielen Dank
Ich habe jetzt die fehlende geschweifte Klammer in der Funktion hinzugefügt und die schließende Klammer für die Main-Funktion an die richtige Stelle gerückt, jetzt funzt es |
|
|
|
 |
µngbd
Unregistrierter
|
µngbd Unregistrierter
03:16:16 13.03.2010 Titel: |
|
Zitieren |
| Haimi schrieb: | jetzt funzt es  |
Sollte es aber nicht. Versuch's so:
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | #include <string.h>
char passwort[] = { "gizmo" };
inline int pwcheck (char string[])
{
return strcmp(passwort, string) == 0;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | #include <string.h>
char passwort[] = { "gizmo" };
inline int pwcheck (char string[])
{
return strcmp(passwort, string) == 0;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | #include <string.h>
char passwort[] = { "gizmo" };
inline int pwcheck (char string[])
{
return strcmp(passwort, string) == 0;
}
| |
Oder so ähnlich.
|
|
|
|
 |
rüdiger
Moderator
Benutzerprofil
Anmeldungsdatum: 11.07.2001
Beiträge: 22819
|
rüdiger Moderator
14:05:44 13.03.2010 Titel: |
|
Zitieren |
|
 |
µngbd
Unregistrierter
|
µngbd Unregistrierter
14:29:02 13.03.2010 Titel: |
|
Zitieren |
Doppelt hält besser.
|
|
|
|
 |