time.h Datei fehlt

#1550795
Lesenswert?

Und wofür benötigst du time.h?

Das Fehlen diese Headers mag wohl daran liegen, dass eine Standard-Uhr 
auf einem AVR nicht vorausgesetzt werden kann und sich jeder 
Programmierer sowieso seine eigenen Uhrenroutinen selber schreibt um zb 
32 Bit Arithmetik zu umgehen.
Und die Konvertier- und Formatierfunktionen: na ja. Die schreibt sich 
soweiso jeder selber bzw sie sind unnötig, weil man eben einen Zeitwert 
auf einem AVR geschickter Weise nicht als 32-Bit long speichert.

Schau dir einfach nur mal die struct tm an:
1
struct tm {
2
  int tm_sec;  // Sekunden nach der vollen Minute (0, 61)* 
3
  int tm_min;  // Minuten nach der vollen Stunde (0, 59) 
4
  int tm_hour; // Stunden seit Mitternacht (0, 23) 
5
  int tm_mday; // Tage im Monat (1, 31) 
6
  int tm_mon;  // Monate seit Januar (0, 11) 
7
  int tm_year; // Jahre seit 1900 
8
  int tm_wday; // Tage seit Sonntag (0, 6) 
9
  int tm_yday; // Tage seit dem 1. Januar (0, 365) 
10
  int tm_isdst; // Kennzeichen für Sommerzeit 
11
};

alles int. Wer sowas auf einem AVR macht, sollte sofort eine mit einem 
nassen Fetzen verpasst bekommen.
#1550805
Lesenswert?

time.h muss laut C-Standard bei "freestanding" Umgebungen (Umgebungen 
ohne Betriebssystem) nicht vorhanden sein. Der AVR ist so eine Umgebung 
und es gibt keine time.h.

Wer weiß was in time.h drin sein muss sieht auch sofort warum. Der Rest 
stimmt an dieser Stelle immer das große Gejammer "könnte man nicht ...?" 
an.
#1550810
Lesenswert?

Der Matze schrieb:
> Wie kann ich denn dann am einfachsten Zufallszahlen mit GCC erzeugen?

rand()
ist schon ok.

Die Frage ist: womit seedest du den Generator ganz am Anfang. Wenn du 
nichts anderes hast, dann nimm eine Konstante.
Du kannst auch am Anfang eine Variable ständig hochzählen, bis der 
Benutzer eine Taste drückt und diese Zahl dann als Seed benutzen.
#1550816
Lesenswert?

Klaus Wachtler schrieb:
> Lt. ANSI-C gibt es eine Funktion rand() und eine srand() in stdlib.h.

:-)
Ich versteh schon was sein Problem ist.

Er hat des Öfteren gesehen (und das ist durchaus üblich so)
1
int main()
2
{
3

4
  srand( time( NULL ) );
5

6
...

Tja. Nur so wird das auf seinem AVR nichts. Es gibt nun mal keine 
aktuelle Uhrzeit :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren