C Kompiler Marco

OP #5261572
Lesenswert?
• ▲
▼
Nabend,
1
#define BUILD_YEAR_CH0 (__DATE__[ 7])
2
#define BUILD_YEAR_CH1 (__DATE__[ 8])
3
#define BUILD_YEAR_CH2 (__DATE__[ 9])
4
#define BUILD_YEAR_CH3 (__DATE__[10])

Kann ich das irgendwie zum funktionieren bringen?
Ich möchte quasie das Kompilier Datum speichern.

Der Kompilier meckert natürlich das es keine Konstante ist.
Gibt es eine bessere Möglichkeit?

Schon mal jedem einen guten Rutsch ;)
Moderator #5261596
Lesenswert?
• ▲
▼
An dem von dir geposteten Code wird der Compiler nichts auszusetzen
haben. Wahrscheinlich versucht du aber woanders, die Macros in der
Initialisierung einer statischen Variablen zu nutzen, was in C nicht
geht (in C++ schon).

Jan H. schrieb:
> Gibt es eine bessere Möglichkeit?

Möglicherweise. Das hängt davon ab, was mit dem Datum letztendlich
geschehen soll.
OP #5261611
Lesenswert?
• ▲
▼
Yalu X. schrieb:
> An dem von dir geposteten Code wird der Compiler nichts auszusetzen
> haben. Wahrscheinlich versucht du aber woanders, die Macros in der
> Initialisierung einer statischen Variablen zu nutzen, was in C nicht
> geht (in C++ schon).
>
> Jan H. schrieb:
>> Gibt es eine bessere Möglichkeit?
>
> Möglicherweise. Das hängt davon ab, was mit dem Datum letztendlich
> geschehen soll.

Wollte die in einem String zusammen speichern.
Moderator #5261652
Lesenswert?
• ▲
▼
Jan H. schrieb:
> Dann kann ich das kompilierungs Datum nicht so einfach in einer
> Variablen speichern?

Doch:

1
char date[] = __DATE__;

Wenn du einen Substring von _DATE_ extrahieren möchtest, geht das nur
zur Laufzeit, also bspw. so:

1
#include <string.h>
2

3
char year[5];
4

5
int main(void) {
6
  strcpy(year, __DATE__+7);
7
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.