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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.