/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
cvs / #defines
Fra : Troels Thomsen


Dato : 03-01-03 10:53

Hej,

Jeg vil gerne i en about box kunne skrive hvilke filer + versionsnumre af
indgående moduler der er blevet brugt under kompileringen. Og det skulle
gerne være lidt automatisk, dvs hvis man kompilerer en fil / header mere
med, så indgår den automatisk i den streng, som det var planen at
preprocessoren skulle bygge for mig.

Jeg bruger CVS og MSVC

Fra CVS kan jeg bruge f.eks. id tag'et

#define _MYMODULE1_CPP "$Id$"
bliver til
#define _MYMODULE1_CPP "$Id: _myModule1.cpp,v 1.21 2002/10/22 19:29:12
myName Exp $"

Tanken var så at jeg i hver fil fylder id tag'et oven i hvad der er i
strengen i forvejen.

Første fil:
#define _VER_STRING _MYMODULE1_CPP

næste fil:
#define TMP _VER_STRING
#undef _VER_STRING // undgå redefinition error
#define _VER_STRING TMP _MYMODULE2_CPP

og så videre.

Med tilstrækkeligt #ifdef 's burde man kunne lave den samme stump kode og
putte ind i alle filer.

Til slut kunne man så lave en
MessageBox(_VER_STRING)

MEN msvc er ikke glad for at #undef'e og #define på den måde

Nogen idéer?
Jeg vil gerne undgå shell programmering.

mvh Troels



 
 
Anders J. Munch (03-01-2003)
Kommentar
Fra : Anders J. Munch


Dato : 03-01-03 17:02

"Troels Thomsen" <nej@tak.dk> wrote in message news:3e155cd0$0$71681
>
> Nogen idéer?
> Jeg vil gerne undgå shell programmering.

struct cvs_id
{
static string alle_cvs_id;
cvs_id(string const& tekst)
{ alle_cvs_id += tekst; }
};

static cvs_id _MYMODULE1_CPP("$Id: _myModule1.cpp,v 1.21 2002/10/22 19:29:12
myName Exp $");

MessageBox(cvs_id::alle_cvs_id.c_str());

Håber det er klart, ellers sig til.

- Anders




Troels Thomsen (06-01-2003)
Kommentar
Fra : Troels Thomsen


Dato : 06-01-03 16:57

>
> static cvs_id _MYMODULE1_CPP("$Id ............$");
>

Ehhh, constructor kald ?
static cvs_id id_obj("text") ???

_MYMODULE1_CPP makro defineret et sted eller ?

static cvs_id id_obj ( ' _MYMODULE1_CPP("$Id$")' );

Jeg er grundig forvirret !!




Anders J. Munch (06-01-2003)
Kommentar
Fra : Anders J. Munch


Dato : 06-01-03 19:06


"Troels Thomsen" <nej@tak.dk> skrev i en meddelelse
news:3e19a6c1$0$71641$edfadb0f@dread11.news.tele.dk...
> >
> > static cvs_id _MYMODULE1_CPP("$Id ............$");
> >
>
> Ehhh, constructor kald ?
> static cvs_id id_obj("text") ???
>
> _MYMODULE1_CPP makro defineret et sted eller ?

Ja, et constructor kald. Ingen makroer. (Det makro-lignende
variabelnavn skyldes bare genbrug fra dit forlæg.)

Idéen er at constructoren tager sig af at registrere informationen
centralt, så du bare skal erklære en variabel i hver .cpp-fil.

> static cvs_id id_obj ( ' _MYMODULE1_CPP("$Id$")' );
>

static cvs_id id_obj("$Id$");

- Anders




Søg
Reklame
Statistik
Spørgsmål : 177491
Tips : 31966
Nyheder : 719565
Indlæg : 6408458
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste