Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Deklaration von Prototypen in C

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.10.2004, 19:01 Uhr
StarShaper



Hallo,

ich habe ein Problem mit einem C-Programm. Es handelt sich um ein einfaches Programm zur Erstellung von Zufallszahlen über die bekannten Funktionen srand() und rand(). Soweit mir bekannt ist, ist eine Deklaration der Funktion notwendig wenn nicht vorher mittels include die entsprechende Header Datei includiert wird. Mein Programm sieht folgendermaßen aus:


Code:
#include <stdio.h>

void srand(unsigned int seed);
int rand(void);

int main()
{
     srand(10);
     zahl = rand();

...



Leider kommt es zu einem Linker-Error LNK2001 solange ich nicht die stdlib.h includiere. Ursache ist ein Nichtaufgeloestes externes Symbol "int __cdecl rand(void)" (?rand@@YAHXZ).
Mein Compiler ist VS C++ 6.0. Würde mich über jede Hilfe oder Ratschläge freuen

Grüße
StarShaper

Dieser Post wurde am 10.10.2004 um 19:02 Uhr von StarShaper editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.10.2004, 19:07 Uhr
Oliver
S2-Pixelgeneral


srand und rand sind Funktionen in der stdlib.h . Bei deinem Code "denkt" der Compiler, dass du selber die Funktionen srand und rand definieren willst, also kommt ein ein Fehler, weil er ja sowas jeztt erwartet:


C++:
....

void srand(unsigned int seed)
{
...
}


int rand(void)
{
...
}




Mach die Deklarationen weg und binde stdlib ein und dann geht es.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.10.2004, 19:07 Uhr
Pablo
Supertux
(Operator)



C++:
#include <stdio.h>
#include <stdlib.h>

int main()
{
     srand(10);
     zahl = rand();

...



so musst du machen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.10.2004, 19:18 Uhr
Oliver
S2-Pixelgeneral


Schneller
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.10.2004, 19:29 Uhr
StarShaper



Hallo Oliver und Pablo,

vielen Dank für eure Antworten. Wie schon geschrieben, funktioniert mein Programm sobald ich die erforderliche Header-Datei, in diesem Fall die stdlib.h includiere. Ich dachte das die Deklaration im Programm durchgeführt werden kann, um eine includierung der entsprechenden Header.Datei umgehen zu können. Genauer gesagt stehe ich am Anfang und meine Programmierkenntnisse sind ziemlich bescheiden - Stichwort erstes Semester , erste Woche .
Der Prof zumindest hat in seinem Beispiel die Funktionen deklariert ohne stdlib mit einzubeziehen und das Programm hat funktioniert. Ist denn eine Deklaration sinnvoll wenn die stdlib.h ohnehin includiert wird?

Grüße
StarShaper
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.10.2004, 19:41 Uhr
Oliver
S2-Pixelgeneral


lol, was ist denn das für ein Professor

Nein, das stimmt so nicht. Die beiden Funktionen sind in stdlib gespeichert und wenn du die jeweilige Headerdatei nicht einbindest, kennt er die Funktionen nicht und er denkt, du willst selber Funktionen deklarieren.

Vielleicht hast du deinen Professor auch nur falsch verstanden aber das will ich hier jetzt nicht beurteilen
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.10.2004, 20:01 Uhr
StarShaper




Zitat von Oliver:
Vielleicht hast du deinen Professor auch nur falsch verstanden aber das will ich hier jetzt nicht beurteilen


Du hast Recht! Nach erneuter Suche habe ich die Einbindung der stdlib.h über eine andere Quelldatei gefunden. Dies war mir in seinem Beispiel entgangen.

Thx

Gruß
StarShaper

Dieser Post wurde am 10.10.2004 um 20:02 Uhr von StarShaper editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: