Compilezeit und -datum als Integer, ähnlich __DATE__

Gast #3396958
Lesenswert?
• ▲
▼
Gibt es eine Möglichkeit, Compilezeit/-datum zur Compilezeit als 
Konstante zu erhalten? Als String ist das Ganze leider volliger Overkill 
und verbraucht zu viel Speicher. Ich brauche eigentlich nur einen 
simplen Timestamp, wie ihn der Compiler ja irgendwo haben muss. Nur, wie 
komme ich da ran?
Moderator Persönliche Seite #3397015
Lesenswert?
• ▲
▼
heiner schrieb:
> Puh, also zu allererst ist ein Timestamp universell, kompatibel, lässt
> sich ohne Aufwand umrechnen, ...

Leider wissen wir nicht so recht, wann unser Universum genau entstanden
ist (Urknall), folglich haben wir keinen bekannten Fixpunkt für einen
Zeitstempel (anders als bspw. die Temperatur).

Alle anderen Bezugssysteme reichen nur eine mehr oder minder endliche
Zeit zurück und haben damit zumindest gegenseitige Offsets, die man
verwalten muss, egal, ob man das nun an der Geburt eines Propheten,
dem Erscheinen eines Betriebssystems oder was auch immer festmacht.

Finde dich einfach damit ab, dass du dir einen Zeitstempel in der
Skalierung deiner Wahl selbst organisieren musst.
Gast #3397073
Lesenswert?
• ▲
▼
moin, moin,

mir reicht ein Timestamp für das komplette Programm, also nicht einer 
pro Quell-Datei. Den kann (sollte) der Linker einbauen. Dazu gibt's im 
Makefile zwei Zeilen:
1
NOW= `date +%s`
2
CFLAGS= -Wl,-defsym=BUILD_TIME=$(NOW)

im Programm gibt's dann diese seltsame Konstruktion, aber im Endeffekt 
kann ich den Zeitpunkt des make-Aufrufs ganz normal verwenden:
1
extern int  BUILD_TIME;
2
time_t  build_time = (time_t)&BUILD_TIME;

Ich würde aber auch eine elegantere Methode verwenden ;)
Gast #3397074
Lesenswert?
• ▲
▼
Ins makefile:
1
gcc -D_BUILD_TIME=`date +%s`
In eine zentrale Headerdatei oder jede .c Datei:
1
extern const time_t BUILD_TIME;
In eine .c Datei:
1
const time_t BUILD_TIME = _BUILD_TIME;
So kann von jeder Stelle im Code "BUILD_TIME" als 
Programmspeicher-Konstante verwendet werden.

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.