Kleines Programm mit rand funktioniert nicht



  • Der Compiler meint, dass srand eine Neudefinition ist. Warum?

    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <cstdlib>
    #include <time.h>
    using namespace std;
    
    srand((unsigned)time(NULL)); // erzeugt einen fehler
    
    int main(int argc, char* argv[])
    {
        for(int i=0;i<100;++i)
            cout<<1+(rand()%100)<<endl;
    
        getchar();
        return 0;
    }
    

    Wenn ich die Zeile auskommentiere, läuft alles wie geschmiert 😕



  • schreibs mal in die int main rein



  • vermutlich is srand schon in einer der header, die du einbindest deklariert, benenne die funktion um, oder schmeiss den verantwortlichen header raus. Ich nehm mal an cstdlib, aber sicher weis ich es nicht.

    [EDIT] Oder verschiebe die Funktion aus dem Namespace std raus, entweder in den Globalen oder in einen Eigenen.[/EDIT]



  • ChockoCookie schrieb:

    vermutlich is srand schon in einer der header, die du einbindest deklariert, benenne die funktion um, oder schmeiss den verantwortlichen header raus. Ich nehm mal an cstdlib, aber sicher weis ich es nicht.

    [EDIT] Oder verschiebe die Funktion aus dem Namespace std raus, entweder in den Globalen oder in einen Eigenen.[/EDIT]

    Nein. k1ro hat recht.

    Die Zeile mit srand() ist ein Aufruf - und ein solcher muss immer in einer Funktion stehen.



  • Stimmt, sorry hab ich völlig überlesen. Ich dachte er will eine eigene Funktion mit Namen srand() definiern. --> Um die Ecke gedacht wo es keinen Grund dazu gab 😉 .


Anmelden zum Antworten