Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: C (C89 und C99) ::  Fehlermeldung beim kompilieren     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Haimi
Mitglied

Benutzerprofil
Anmeldungsdatum: 29.03.2009
Beiträge: 67
Beitrag 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




Beitrag µ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




Beitrag 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 :confused:

lg lolo
boonlolo
Unregistrierter




Beitrag boonlolo Unregistrierter 17:08:11 12.03.2010   Titel:              Zitieren

noobLolo schrieb:
erstmal würd ich z.45,46,47 entfernen...


oder z.43 :p
µngbd
Unregistrierter




Beitrag µ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




Beitrag 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
Beitrag 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




Beitrag µ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
Beitrag rüdiger Moderator 14:05:44 13.03.2010   Titel:              Zitieren

Dev C++ ist veraltet und fehlerhaft.

_________________
.
µngbd
Unregistrierter




Beitrag µngbd Unregistrierter 14:29:02 13.03.2010   Titel:              Zitieren

rüdiger schrieb:
Dev C++ ist veraltet und fehlerhaft.

Doppelt hält besser.
:)
C/C++ Forum :: C (C89 und C99) ::  Fehlermeldung beim kompilieren   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.