Moin moin, ich habe hier ein mitlerweile etwas größeres Projekt mit einem Mega128 sowie LC-Display. Jetzt möchte ich gerne auf dem Display das Datum bzw. die Zeit oder aber eine fortlaufende Versionsnummer des Compilierens mit ausgeben. Ist soetwas mit WinAVR möglich und wenn ja, wie muss ich das machen? mfg Jens
Cool, das funktioniert ja tatsächlich! ;o)) Dennoch eine Frage: _DATE_ ist im Format "Feb 22 2006", ich hätte aber lieber "22.02.2006". Kann man die Formatierung des Datums irgendwo definieren? Falls JA, Wo und Wie? MfG Peter
> _DATE_ ist im Format "Feb 22 2006", ich hätte aber lieber > "22.02.2006". Kann man die Formatierung des Datums irgendwo > definieren? Nein, sie ist exakt in der Form durch den C-Standard festgelegt. Es ist sogar vorgeschrieben, dass bei einem einstelligen Tagesdatum die Zehnerstelle ein Leerzeichen sein muss.
Ist ja kein Problem, du musst halt das Datum z.B. zur Laufzeit ins gewünschte Format bringen (d.h. aus dem String den du mit _DATE_ erzeugt hast einen neuen erzeugen).
In C++ wüßte ich eine Lösung. Die geht aber in C leider nicht, da das Ergebnis von ?: kein konstanter Ausdruck ist.
1 | #include <stdio.h> |
2 | |
3 | const char mydate[] = |
4 | {
|
5 | __DATE__[4] == ' ' ? '0' : __DATE__[4], __DATE__[5], '.', |
6 | |
7 | __DATE__[0] == 'O' || |
8 | __DATE__[0] == 'N' || |
9 | __DATE__[0] == 'D' ? '1' : '0', |
10 | |
11 | __DATE__[0] == 'J' && __DATE__[0] == 'a' ? '1' : |
12 | __DATE__[0] == 'F' ? '2' : |
13 | __DATE__[0] == 'M' && __DATE__[2] == 'r' ? '3' : |
14 | __DATE__[0] == 'A' && __DATE__[1] == 'p' ? '4' : |
15 | __DATE__[0] == 'M' ? '5' : |
16 | __DATE__[0] == 'J' && __DATE__[2] == 'n' ? '6' : |
17 | __DATE__[0] == 'J' ? '7' : |
18 | __DATE__[0] == 'A' ? '8' : |
19 | __DATE__[0] == 'S' ? '9' : |
20 | __DATE__[0] == 'O' ? '0' : |
21 | __DATE__[0] == 'N' ? '1' : |
22 | __DATE__[0] == 'D' ? '2' : 'X', |
23 | |
24 | '.', |
25 | __DATE__[7], __DATE__[8], __DATE__[9], __DATE__[10], '\0' |
26 | |
27 | };
|
28 | |
29 | int main() |
30 | {
|
31 | printf("%s\n", mydate); |
32 | return 0; |
33 | }
|
Ach ja, die Forumssoft und ihre Underscores.... Das <u> und </u> ist zu entfernen.
Clever. :-) GCC gestattet es als extension, dass man in C eine automatische Variable mit nicht konstanten Ausdrücken initialisiert. Damit funktioniert obiges auch im C-Modus, wenn man mydate[] lokal zur Funktion macht, die es benutzt. Ich hätte ja gedacht, dass man noch irgendwelche schrägen Hacks mit compound initializers machen kann, finde aber auf die schnelle keine Lösung dafür.
Ich mache sowas in Headerfiles per Shellscript. So kann man dann gleich auch noch eine 'buildnumber' einbauen...
@Patrick gib uns doch bitte ein Beispiel. Danke und Gruß, Dirk
@Rolf Magnus: Geniale Funktion; ein kleiner Tippfehler noch: in Zeile 11 muß beim zweiten DATE-Index eine '1' stehen statt einer '0': 11. _<u>_DATE_</u>_[0] == 'J' && _<u>_DATE_</u>_[1] == 'a' ? '1' Ansonsten: super Idee, das Systemdatum so aufzubereiten. Danke! Günter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.