mikrocontroller.net

Forum: Projekte & Code Jidai - compilation time stamps


Autor: Vincent H. (vinci)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grüß euch

Jidai ist eine Mini-Lib (single header) die aus den Präprozessor Defines 
DATE und TIME (inkl. double underscores) einen sinnvollen Zeitstempel 
der Compile Zeit bestehend aus Datum und Uhrzeit erzeugt.

Im wesentlichen beschränkt sich das ganze auf 2 Optionen:

1.) Die Erzeugung folgenden structs
struct CompilationTime {
  uint8_t day;
  uint8_t month;
  uint16_t year;
  uint8_t hour;
  uint8_t minute;
  uint8_t second;
};

durch die Funktion
constexpr CompilationTime make_compilation_time();


2.) Die Erzeugung eines unix time stamps zu einer gewissen Epoch.

Der Rückgabewert ist in diesem Fall ein Template, sollte man ein 
spezielles Format brauchen. (z.B. lediglich 4-byte signed, wie es recht 
häufig zu sehen ist)
template<typename T = time_t>
constexpr T make_unix_compilation_time(CompilationTime const epoch = default_epoch);

default_epoch entspricht der klassischen Unix Epoch 1.1.1970.
inline constexpr CompilationTime default_epoch{.day = 1, .month = 1, .year = 1970};

Interessante Randnotiz: Sowohl unter GCC als auch unter Clang beginnt 
die Unix Epoche erst um 1 Uhr und nicht mit Mitternacht... ;)


Header inkl. Test gibts hier:
https://gitlab.com/higaski/Jidai

: Bearbeitet durch User
Autor: W.S. (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
und was spricht gegen die Verwendung von "__DATE__" und "__TIME__" ?

W.S.

Autor: ui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
W.S. schrieb:
> und was spricht gegen die Verwendung von "__DATE__" und "__TIME__"
> ?
>
> W.S.

Schau doch mal rein in die header Datei. Das ist einfach nur ein Wrapper 
für _DATE__ und __TIME_ :)

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
W.S. schrieb:
> und was spricht gegen die Verwendung von "__DATE__" und "__TIME__" ?

Die liefern einfache Strings, nicht aber eine befüllte Struktur, aus der 
man die einzelnen Werte herauspicken kann.

"jidai" ist ein Parser für diese Strings.

Autor: Wilhelm M. (wimalopaan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau ja fast so aus, als hättest Du meinen Idee / meinen Code 
aufgegriffen:

Beitrag "Re: avr-gcc: _DATE_ formatieren / "initializer element is not constant""

Autor: Vincent H. (vinci)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab für ein Projekt in der Arbeit einen Unix Timestamp benötigt. Zuerst 
hoffte ich drauf dass <chrono> da was passendes hat... aber da gibts 
leider nix constexpr taugliches.

Nach "constexpr compile time" oder ähnlichem googlen war dann auch nicht 
wirklich erfolgreich. :)

Autor: Wilhelm M. (wimalopaan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vincent H. schrieb:
> Hab für ein Projekt in der Arbeit einen Unix Timestamp benötigt. Zuerst
> hoffte ich drauf dass <chrono> da was passendes hat... aber da gibts
> leider nix constexpr taugliches.

Schau mal nach Howard Hinnants "Date"-Bibliothek, die Vorlage für 
C++20-Date.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.