[gelöst] __DATE__ & __TIME__ im Iso-Format?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

[gelöst] __DATE__ & __TIME__ im Iso-Format?

Beitrag von cosmac » 12.06.2007 22:45:11

moin, moin,

die Macros __DATE__ und __TIME__ machen fast das Richtige für mich,
aber damit das Datum für Menschen und Maschinen besser lesbar wird,
hätte ich gern was in der Form yyyy-mm-dd hh:mm:ss.

Gibt's da evt. einen ganz anderen Trick? Noch schöner wäre es nämlich,
wenn der Zeitstempel nicht vom Compiler sondern erst vom Linker
erzeugt würde. Wie macht man das richtig?

Das Ganze soll gleichzeitig als Versions-Nummer dienen und die muß
bei Firmware-Updates von einem HCS12 geprüft werden und ich hab'
keine Lust, das __DATE__-Format zu parsen.
Zuletzt geändert von cosmac am 17.06.2007 22:01:38, insgesamt 1-mal geändert.
Beware of programmers who carry screwdrivers.

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 17.06.2007 20:20:33

Hi,

so auf die Schnelle würden mir folgendes einfallen.

1.) Du holst Dir die Sourcen vom gcc und änderst die Makrodefinition nach Deinen Vorstellungen ab.
Vorteil: Du brauchst Deine Sourcen nicht ändern
Nachteil: Dein Source erzeugt mit einem anderen Compiler ein anderes Ergebnis
2.) Du redefinierst die Makros nach Deinen Vorstellungen in einer eigenen Headerdatei und bindest diese ein.
Vorteil/Nachteil siehe 1.)
3.) (quick and dirty) Du änderst Deinen build Prozess ab. Erstellst ganz am Anfang einen Headerdatei

Code: Alles auswählen

date "+#define __DATE__ \"%Y-%m-%d %H:%M:%S\"" > mydate.h
bindest diese in Deinen Source ein.
Vorteil/Nachteil siehe 1.)

Ich würde in so einem Fall 3.) verwenden. Statt __DATE__ aber z.B. __MYDATE__ definieren. Das Makefile entsprechend anpassen, damit die Headerdatei erstellt wird.

SubOptimal

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 17.06.2007 22:01:02

ja hallo,

danke für die Antwort, sowas hab' ich befürchtet. Bisher lief es praktisch so
wie dein Vorschlag 3. Wobei das ja wohl Compiler-unabhängig ist wenn ich
ein eigenes Macro verwende.

Inzwischen brauch' (naja, will) ich auch noch einen CRC-16 über das Binary.
Bei der Gelegenheit wird jetzt auch gleich der Zeitstempel reingebaut, also
direkt nach dem Linken.

Irgendwie dachte ich, sowas braucht doch jeder, nur ich find's nicht ;)
Beware of programmers who carry screwdrivers.

Antworten