amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > versions-string [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2005-04-17, 18:41 h

Valwit
Posts: 750
User
hi!
wie fügt man einen versionsstring hinzu (in c)? ich möchte ein hello world schreiben dass nach dem compilen eine versionsnummer enthält, die sich mit "version" in der shell anzeigen lässt
--
Viele Grüsse
Valwit

[ - Answer - Quote - Direct link - ]

2005-04-17, 18:57 h

geit
Posts: 332
[Former member]

Du mußt einfach nur einen Versionsstring in eine Variable packen:

const char app_versionstring[] = "$VER: hello.world V1.00 (16.04.2005)";

Je nach compileroption mußt Du eventuell dem Compiler mitteilen, das die Variable nicht wegoptimiert wird, weil sie ja meistens nicht referiert wird.

Guido Mersmann

[ - Answer - Quote - Direct link - ]

2005-04-17, 20:40 h

thomas
Posts: 7721
User

Am sinnvollsten benutzt du BumpRev, um den Versionsstring zu generieren. (BumpRev ist im NDK enthalten).

Gib in der Shell ein: BumpRev meinprogramm 1

Dann sieht dein Programm so aus:

#include "meinprogramm_rev.h"

const char app_versionstring[] = VERSTAG;

oder auch

const char app_versionstring[] = VERSTAG " (c) 2005 mein name <meine.email@adresse>";

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ - Answer - Quote - Direct link - ]

2005-04-17, 21:29 h

Valwit
Posts: 750
User
danke sehr :)
--
Viele Grüsse
Valwit

[ - Answer - Quote - Direct link - ]

2005-04-18, 00:30 h

geit
Posts: 332
[Former member]

Das kann man natürlich handhaben, wie man will. Zum einfachen Verständniss war das so ok.

Bei mir sieht der für alle Programme so aus:


/********************************************************************* *****/
#define I2S(x) I2S2(x)
#define I2S2(x) #x

#ifndef VERSION_EXT
#define VERSION_EXT ""
#endif

__entry const char app_versionstring[] = "$VER: " APPLICATIONNAME " " I2S(VERSION) "." I2S(REVISION) " (" I2S(DAY) "." I2S(MONTH) "." I2S(YEAR) ") by " AUTHORNAME " " VERSION_EXT;


Guido Mersmann

[ - Answer - Quote - Direct link - ]

2005-04-18, 11:15 h

gni
Posts: 1106
User
Zitat:
geit:
const char app_versionstring[] = "$VER: hello.world V1.00 (16.04.2005)";

Je nach compileroption mußt Du eventuell dem Compiler mitteilen, das die Variable nicht wegoptimiert wird, weil sie ja meistens nicht referiert wird.

Wenn ein Compiler eine *nicht-statische* globale Variable entfernt, dann macht er was falsch :-)

[ Dieser Beitrag wurde von gni am 18.04.2005 editiert. ]

[ - Answer - Quote - Direct link - ]

2005-04-18, 20:06 h

geit
Posts: 332
[Former member]
Zitat:
Original von gni:
Zitat:
geit:
const char app_versionstring[] = "$VER: hello.world V1.00 (16.04.2005)";

Je nach compileroption mußt Du eventuell dem Compiler mitteilen, das die Variable nicht wegoptimiert wird, weil sie ja meistens nicht referiert wird.

Wenn ein Compiler eine *nicht-statische* globale Variable entfernt, dann macht er was falsch :-)

Wenn eine Variable nicht benutzt (aka referiert) wird, kann sie im Zuge des Optimierens sehr wohl entfernt werden.

Guido Mersmann

[ - Answer - Quote - Direct link - ]

2005-04-18, 22:36 h

tokai
Posts: 1071
User
Zitat:
Original von geit:

Du mußt einfach nur einen Versionsstring in eine Variable packen:

const char app_versionstring[] = "$VER: hello.world V1.00 (16.04.2005)";


Dieses versionstag ist nicht valid. :-)

richtig wäre: "$VER: hello.world 1.0 (16.04.2005)"

Zur Erläuterung: "$VER: programname version.revision (DD.MM.YYYY)",
der Revision wird keine führende Null vorrangestellt (ja, auch C= hat das falsch gemacht ;)

regards,
tokai



--
http://www.christianrosentreter.com ~ MorphOS und AmigaOS Software

[ - Answer - Quote - Direct link - ]

2005-04-18, 22:47 h

geit
Posts: 332
[Former member]
Zitat:
Original von tokai:
Zitat:
Original von geit:

Du mußt einfach nur einen Versionsstring in eine Variable packen:

const char app_versionstring[] = "$VER: hello.world V1.00 (16.04.2005)";


Dieses versionstag ist nicht valid. :-)

richtig wäre: "$VER: hello.world 1.0 (16.04.2005)"

Zur Erläuterung: "$VER: programname version.revision (DD.MM.YYYY)",
der Revision wird keine führende Null vorrangestellt (ja, auch C= hat das falsch gemacht ;)


Ja, hast ja recht. Das passiert, wenn man immer nur das Macro (s.o.) verwendet und es dann mal eben so hinschreibt. :)

Guido Mersmann




[ - Answer - Quote - Direct link - ]

2005-04-19, 09:47 h

gni
Posts: 1106
User
Zitat:
geit:
Zitat:
gni:
Wenn ein Compiler eine *nicht-statische* globale Variable entfernt, dann macht er was falsch :-)

Wenn eine Variable nicht benutzt (aka referiert) wird, kann sie im Zuge des Optimierens sehr wohl entfernt werden.
Das ist für nicht-static Variablen (und auch Funktionen) definitiv falsch! Wie soll der Compiler für *global* sichtbare Elemente entscheiden, das sie unbenutzt sind?

[ - Answer - Quote - Direct link - ]

2005-04-19, 10:29 h

Solar
Posts: 3680
User
Der Compiler kann's nicht entscheiden, weil beim Linken ja andere Objektfiles das Symbol referenzieren könnten.

Aber wie sieht das beim Linker aus? Der hat doch die vollständigen Referenztabellen...

[ - Answer - Quote - Direct link - ]

2005-04-19, 13:25 h

gni
Posts: 1106
User
Zitat:
Solar:
Der Compiler kann's nicht entscheiden, weil beim Linken ja andere Objektfiles das Symbol referenzieren könnten.

Gut erkannt.
Zitat:
Aber wie sieht das beim Linker aus? Der hat doch die vollständigen Referenztabellen...
Das ist zwar richtig, hilft aber nicht. Der Linker könnte unbenutze Elemente nur entfernen, wenn sie in eigenen Sektionen liegen und das ist selten der Fall.

[ - Answer - Quote - Direct link - ]

2005-04-19, 13:32 h

Solar
Posts: 3680
User
*klatsch*

Klar, symbolweise geht ja gar nicht... manchmal hilft nachdenken. Danke für den leichten Schlag auf den Hinterkopf. I-)

[ - Answer - Quote - Direct link - ]

2005-04-19, 20:35 h

Holger
Posts: 8116
User
Zitat:
Original von gni:
Das ist zwar richtig, hilft aber nicht. Der Linker könnte unbenutze Elemente nur entfernen, wenn sie in eigenen Sektionen liegen und das ist selten der Fall.

Das sollte er vor allem nicht als seine Aufgabe ansehen. Zu diesem Zweck erzeugt man ja explizit link-libs, aus denen dann der Linker dann nur referenzierte Objekte nimmt.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > versions-string [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved.
.