amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > versions-string [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

17.04.2005, 18:41 Uhr

Valwit
Posts: 750
Nutzer
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

[ - Antworten - Zitieren - Direktlink - ]

17.04.2005, 18:57 Uhr

geit
Posts: 332
[Ex-Mitglied]

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

[ - Antworten - Zitieren - Direktlink - ]

17.04.2005, 20:40 Uhr

thomas
Posts: 7716
Nutzer

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/

[ - Antworten - Zitieren - Direktlink - ]

17.04.2005, 21:29 Uhr

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

[ - Antworten - Zitieren - Direktlink - ]

18.04.2005, 00:30 Uhr

geit
Posts: 332
[Ex-Mitglied]

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

[ - Antworten - Zitieren - Direktlink - ]

18.04.2005, 11:15 Uhr

gni
Posts: 1106
Nutzer
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. ]

[ - Antworten - Zitieren - Direktlink - ]

18.04.2005, 20:06 Uhr

geit
Posts: 332
[Ex-Mitglied]
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

[ - Antworten - Zitieren - Direktlink - ]

18.04.2005, 22:36 Uhr

tokai
Posts: 1071
Nutzer
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

[ - Antworten - Zitieren - Direktlink - ]

18.04.2005, 22:47 Uhr

geit
Posts: 332
[Ex-Mitglied]
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




[ - Antworten - Zitieren - Direktlink - ]

19.04.2005, 09:47 Uhr

gni
Posts: 1106
Nutzer
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?

[ - Antworten - Zitieren - Direktlink - ]

19.04.2005, 10:29 Uhr

Solar
Posts: 3680
Nutzer
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...

[ - Antworten - Zitieren - Direktlink - ]

19.04.2005, 13:25 Uhr

gni
Posts: 1106
Nutzer
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.

[ - Antworten - Zitieren - Direktlink - ]

19.04.2005, 13:32 Uhr

Solar
Posts: 3680
Nutzer
*klatsch*

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

[ - Antworten - Zitieren - Direktlink - ]

19.04.2005, 20:35 Uhr

Holger
Posts: 8116
Nutzer
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.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > versions-string [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.