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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren