Builtdatum speichern!

Gast #3227600
Lesenswert?

Hallo,
welche Möglichkeit gibt es, das Builtdatum unter Atmelstudio 6.1 beim 
Compilieren in eine Variable zu speichern?

So stelle ich mir das vor:
1
Datum.Tag = Kompilierdatumstag;
2
Datum.Monat = ...
3
...
4
...

Geht sowas? Zur Zeit mach ich das per Hand, geht das irgenwie eleganter?


Ingo
#3227642
Lesenswert?

1
#include <avr/pgmspace.h>
2
#include "_version.h"
3

4
prog_uint8_t Version[] __attribute__((used));
5
prog_uint8_t Version[] = PROJECT_STRING ", "
6
                         "V:" REVISION_STRING ", "
7
       __DATE__ "\n";
8

9
prog_uint8_t Author[] __attribute__((used));
10
prog_uint8_t Author[] =   "Peter Dannegger";
Gast #3227785
Lesenswert?

Habs hinbekommen! Danke:
Im header
1
#define BUILD_HOUR_CH0  ((__TIME__[0]) - '0')
2
#define BUILD_HOUR_CH1  ((__TIME__[1]) - '0')
3

4
#define BUILD_MIN_CH0 ((__TIME__[3]) - '0')
5
#define BUILD_MIN_CH1 ((__TIME__[4]) - '0')
6

7
#define BUILD_YEAR_CH0 ((__DATE__[ 7]) - '0')
8
#define BUILD_YEAR_CH1 ((__DATE__[ 8]) - '0')
9
#define BUILD_YEAR_CH2 ((__DATE__[ 9]) - '0')
10
#define BUILD_YEAR_CH3 ((__DATE__[10]) - '0')
11

12
#define BUILD_MONTH_IS_JAN (__DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n')
13
#define BUILD_MONTH_IS_FEB (__DATE__[0] == 'F')
14
#define BUILD_MONTH_IS_MAR (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'r')
15
#define BUILD_MONTH_IS_APR (__DATE__[0] == 'A' && __DATE__[1] == 'p')
16
#define BUILD_MONTH_IS_MAY (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'y')
17
#define BUILD_MONTH_IS_JUN (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n')
18
#define BUILD_MONTH_IS_JUL (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l')
19
#define BUILD_MONTH_IS_AUG (__DATE__[0] == 'A' && __DATE__[1] == 'u')
20
#define BUILD_MONTH_IS_SEP (__DATE__[0] == 'S')
21
#define BUILD_MONTH_IS_OCT (__DATE__[0] == 'O')
22
#define BUILD_MONTH_IS_NOV (__DATE__[0] == 'N')
23
#define BUILD_MONTH_IS_DEC (__DATE__[0] == 'D')
24

25
#define BUILD_MONTH_CH0 \
26
((BUILD_MONTH_IS_OCT || BUILD_MONTH_IS_NOV || BUILD_MONTH_IS_DEC) ? 1 : 0)
27

28
#define BUILD_MONTH_CH1 \
29
(  \
30
(BUILD_MONTH_IS_JAN) ? 1 : \
31
(BUILD_MONTH_IS_FEB) ? 2 : \
32
(BUILD_MONTH_IS_MAR) ? 3 : \
33
(BUILD_MONTH_IS_APR) ? 4 : \
34
(BUILD_MONTH_IS_MAY) ? 5 : \
35
(BUILD_MONTH_IS_JUN) ? 6 : \
36
(BUILD_MONTH_IS_JUL) ? 7 : \
37
(BUILD_MONTH_IS_AUG) ? 8 : \
38
(BUILD_MONTH_IS_SEP) ? 9 : \
39
(BUILD_MONTH_IS_OCT) ? 0 : \
40
(BUILD_MONTH_IS_NOV) ? 1 : \
41
(BUILD_MONTH_IS_DEC) ? 2 : \
42
/* error default */    '?' \
43
)
44

45

46
#define BUILD_DAY_CH0 ((__DATE__[4] >= '0') ? (__DATE__[4]) : 0)
47
#define BUILD_DAY_CH1 ((__DATE__[ 5]) - '0')
im Source:
1
  Kalender.Tag = BUILD_DAY_CH0 * 10 + BUILD_DAY_CH1;
2
  Kalender.Monat = BUILD_MONTH_CH0 * 10 + BUILD_MONTH_CH1;
3
  Kalender.Jahr = BUILD_YEAR_CH0 * 1000 + BUILD_YEAR_CH1 * 100 + BUILD_YEAR_CH2 * 10 + BUILD_YEAR_CH3;
4
  
5

6
  Uhr.Stunde = BUILD_HOUR_CH0 *10 + BUILD_HOUR_CH1;
7
  Uhr.Minute = BUILD_MIN_CH0 * 10 + BUILD_MIN_CH1;
Gast #3227805
Lesenswert?

Hi

>#define BUILD_MONTH_IS_JAN (__DATE__[0] == 'J' && __DATE__[1] == 'a' && 
__DATE__[2] == 'n')

Kennt GCC keine Formatangaben? Im Assembler des AVR-Studios habe ich 
z.B.
für den Monat die Auswahl

%m - Month number (01-12)

%b - Abbreviated month name

%B - Full month name

MfG Spess

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