Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Macrogemurkse

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]
000
19.01.2004, 15:28 Uhr
virtual
Sexiest Bit alive
(Operator)


Gegeben sind folgende Macros:

C++:
#define VERSION 1
#define REVISION 2
#define PATCHLEVEL 3


Diese definieren in einer Application die Versionsnummer.
Zu definieren ist ein Macro, was folgendes leisten kann:

C++:
#define VERSIONSTING(v,r,p) ... // Deine Idee hier!


int main()
{
     printf("Application %s\n", VERSIONSTRING(VERSION,REVISION,PATCHLEVEL));
}


Ausgabe:

Code:
Application 1.2.3


Anmerkungen:
1. die Printf anweisung darf nicht verändert werden.
2. Selbstverständlich soll sich die Ausgabe entsprechend ändern, wenn man eines der vorgegebenen Macros ändert
3. Man darf auch mehrere Macros definieren, wenn man l(i|u)stig ist.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.01.2004, 16:26 Uhr
kronos
Quotenfisch
(Operator)


mein ansatz für einstellige nummern:

C++:
#define VERSIONSTRING(v,r,p) (char[]){v+48,'.',r+48,'.',p+48,0}

vielleicht mach' ich heute abend weiter...
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.01.2004, 16:33 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


so ne scheisse das frisst mein kompiler mal wieder nicht...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.01.2004, 17:34 Uhr
(un)wissender
Niveauwart


Das funzt bei mir, aber ich weiß nicht, wie ich mit dem Preprozessor beliebig große Arrays bekomme, man könnte evtl. strcat nutzen, aber toll ist das nicht.


C++:
#include <cstdlib>
#include <cstdio>

#define VERSION 10
#define REVISION 20
#define PATCHLEVEL 30

#define makeString(c,v,r,p) sprintf(c, "%d.%d.%d", v, r, p) > 0 ? c : "Error!"
#define my_charArray (char[]){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
#define VERSIONSTRING(v,r,p) makeString(my_charArray,v,r,p)


int main()
{    
    printf("Application %s\n", VERSIONSTRING(VERSION,REVISION,PATCHLEVEL));      
    return 0;  
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.01.2004, 17:45 Uhr
virtual
Sexiest Bit alive
(Operator)


@(un)wissender:
Ist ne durchgeknallte Idee mit dem anonymen Array, oder wie man das nennen soll. hat ihren Reiz. Aber ziemlich umständlich, finde ich...
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.01.2004, 20:56 Uhr
(un)wissender
Niveauwart


Jo, und auch nicht unendlich skalierbar.
Ich habe schlicht keine Ahnung vom Preprozessor, daran liegt es, ich ignoriere denn wo ich kann.
Man kann doch mit dem Preprozessor keine Variable deklarieren, richtig?
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.01.2004, 22:42 Uhr
virtual
Sexiest Bit alive
(Operator)


Nee, Variable nicht....
Kleiner Tipp:
In C ist

C++:
"Hello" "World"


nichts anderes als

C++:
"HelloWorld"


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.01.2004, 06:45 Uhr
(un)wissender
Niveauwart


Hm, habe da eine Denkblockade.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
20.01.2004, 08:57 Uhr
virtual
Sexiest Bit alive
(Operator)



C++:
#define VERSION 1
#define REVISION 2
#define PATCHLEVEL 3
[b]
#define MAKESTR(x) #x
#define VERSIONSTRING(v,r,p) MAKESTR(v) "." MAKESTR(r) "." MAKESTR(p)
[/b]
int main()
{
    printf("%s\n", VERSIONSTRING(VERSION, REVISION, PATCHLEVEL));
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
20.01.2004, 10:34 Uhr
(un)wissender
Niveauwart


Das verstehe ich nicht, was macht denn #?


Bearbeitung:

Habe den #-Operator gefunden, toll, der macht ja alles für einen.


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: