[C++] A votre avis c'est possible de faire ca?

A votre avis c'est possible de faire ca? [C++] - C++ - Programmation

Marsh Posté le 08-04-2002 à 12:30:41    

J'ai défini ceci :  
#define VERSION_MAJOR         1
#define VERSION_MINOR         20
#define PRETTY_NAME           "Software 1.20"
 
Mais j'aimerais plutot avoir un truc un peu plus "automatisé" de maniere a ce que je n'ai qu'a changer VERSION_MAJOR ou MINOR et que la string se change toute seule :
#define VERSION_MAJOR      1
#define VERSION_MINOR      20
#define PRETTY_NAME       "Software VERSION_MAJOR.VERSION_MINOR"
 
Evidemment, pour PRETTY_NAME, il m'affiche :
"Software VERSION_MAJOR.VERSION_MINOR"  et non pas "Software 1.20" ce qui est normal....
Je cherche la syntaxe correcte pour faire ca... Quelqu'un sait?

 

[jfdsdjhfuetppo]--Message édité par Ace17--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 08-04-2002 à 12:30:41   

Reply

Marsh Posté le 08-04-2002 à 15:12:09    

moi j'aurais fait :
 
#define VERSION_MAJOR      1  
#define VERSION_MINOR      20  
 
et puis  
 
char PRETTY_NAME[30];
 
sprintf(PRETTY_NAME,"Software %d.%d" ,VERSION_MAJOR,VERSION.MINOR);
 
Cela devrait marcher.

Reply

Marsh Posté le 08-04-2002 à 15:29:15    

arf...ca existe presque mot pour mot dans l'installeur de nullsoft (editeur de winamp, installer de winamp, gordianknot, etc..)...
 
quand tu compiles l'installeur, dans ton script, tu peux mettre major et minor version pareil que tu l'a mis...
 
maintenant je sais pas programmer en C++, donc je peux pas te dire :D


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 08-04-2002 à 16:06:18    

torpe23 a écrit a écrit :

moi j'aurais fait :
 
#define VERSION_MAJOR      1  
#define VERSION_MINOR      20  
 
et puis  
 
char PRETTY_NAME[30];
 
sprintf(PRETTY_NAME,"Software %d.%d" ,VERSION_MAJOR,VERSION.MINOR);
 
Cela devrait marcher.  




 
Oui je sais, merci  :) Mais j'aimerais que ce soit une constante;
 
Jubijub tu pourrais pas balancer un morceau de ce que tu as? Merci

 

[jfdsdjhfuetppo]--Message édité par Ace17--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 08-04-2002 à 16:15:25    

Tu peux utiliser autoconf, avec par exemple :
VERSION_MAJOR=1
VERSION_MINOR=20
AM_INIT_AUTOMAKE(programme,"$VERSION_MAJOR"."$V
ERSION_MINOR" )
 
(non testé)
 
Puis dans un version.h.in tu mets :
#define VERSION_MAJOR @VERSION_MAJOR@
#define VERSION MINOR @VERSION_MINOR@
#define PRETTY_NAME "Software @VERSION_MAJOR@.@VERSION_MINOR@"
 
Comme ça en plus, autoconf connaît le numéro de version, c'est préférable.

 

[jfdsdjhfuetppo]--Message édité par Jar Jar--[/jfdsdjhfuetppo]


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 08-04-2002 à 16:17:27    

c'est surement tres bien autoconf mais y'a quand meme bien un moyen de concaténer des strings statiquement en C++!!!!  :pt1cable:

Reply

Marsh Posté le 08-04-2002 à 16:19:00    

Ace17 a écrit a écrit :

c'est surement tres bien autoconf mais y'a quand meme bien un moyen de concaténer des strings statiquement en C++!!!!  :pt1cable:  




Pas forcément en constante!! ;)


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
Reply

Marsh Posté le 08-04-2002 à 16:20:20    

:lol: bon je crois que je vais opter pour ce que j'appelle la "technique du crétin" c'est a dire :
#define VERSION_MAJOR         1
#define VERSION_MINOR         20
#define PRETTY_NAME           "Software 1.20"

Reply

Marsh Posté le 08-04-2002 à 17:14:46    

Ace17 a écrit a écrit :

c'est surement tres bien autoconf mais y'a quand meme bien un moyen de concaténer des strings statiquement en C++!!!!  :pt1cable:  




 
oui quand il s'agit de variables..
 

Code :
  1. #define MAJEURE "1"
  2. #define MINEURE "20"
  3. const char PRETTY_NAME[] = "Software " MAJEURE "." MINEURE;


 
LEGREG

Reply

Marsh Posté le 08-04-2002 à 17:45:07    

C'est tout con en fait.
 
#define VERSION_MAJOR "1"
#define VERSION_MINOR "20"
#define PRETTY_NAME "Software " VERSION_MAJOR "." VERSION_MINOR


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 08-04-2002 à 17:45:07   

Reply

Marsh Posté le 08-04-2002 à 18:21:16    

MDR c'était tout con en effet! Et moi qui suit allé chercher si loin avec les # et les ##!! :lol:  
 
Par contre j'aimerais présenter mon amélioration; En effet je préfere que les deux premieres constantes ne soient pas des strings tout simplement pour pouvoir faire des comparaisons sur les n° de version...
 
#define VERSION_HIGH 0
#define VERSION_LOW 00
 
#define MKSZ(a)  #a
 
#define PRETTY_NAME   "Software " MKSZ(VERSION_HIGH) "." MKSZ(VERSION_LOW)

Reply

Marsh Posté le 08-04-2002 à 18:26:56    

C'est pas plutôt "a" au lieu de #a?


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 08-04-2002 à 18:28:23    

Non justement, le # sert a transformer en string le parametre. Si tu mettais "a" il t'afficherait : Software a.a

 

[jfdsdjhfuetppo]--Message édité par Ace17--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 08-04-2002 à 18:31:53    

Ace17 a écrit a écrit :

Non justement, le # sert a transformer en string le parametre. Si tu mettais "a" il t'afficherait : Software a.a


La vache, on peut en faire des trucs avec le préprocesseur, il est plein de richesses insoupçonnées.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 08-04-2002 à 18:32:12    

Oui, je viens de tester en effet. J'ai répondu trop vite. :sweat:
 
Mais j'ai "Software VERSION_HIGH.VERSION_LOW". :confused:

 

[jfdsdjhfuetppo]--Message édité par Krueger--[/jfdsdjhfuetppo]


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 08-04-2002 à 22:34:12    

Whoups.... ca compilait mais j'avais pas testé... ( c'est pour une librairie alors comme y'a pas d'appli client... )
En fait c'est normal ce résultat quand on y pense...
Bon ben je vais revenir a ma technique du cretin... :D

Reply

Marsh Posté le 09-04-2002 à 12:41:58    

Tu peux toujours garder tes constantes de type chaîne de caractère et les convertir au besoin en entiers si tu veux les comparer. ;)


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 09-04-2002 à 12:45:07    

Ouais, c'est sans doute ce que je vais faire  ;)

Reply

Marsh Posté le 09-04-2002 à 13:38:46    

euh....vous etes plutot perturbés les gars...
ça, ca marche:
 
 
#define  APP_MAJOR_VERSION 12
#define  APP_MINOR_VERSION 40
#define  STR(n) #n
#define         VERSIONIZE(a,b)    "MonProgramme v" STR(a) "." STR(b)
 
 
Voili, donc tu peux faire:
 
#define     UNE_CHAINE_BIEN_FORMATEE         VERSIONIZE(APP_MAJOR_VERSION , APP_MINOR_VERSION )  
 
 
 :jap:  :hello:

Reply

Marsh Posté le 10-04-2002 à 00:08:08    

Hé ben enfin quelqu'un qui trouve!  :lol:
Merci a toi point!

Reply

Marsh Posté le 10-04-2002 à 11:09:18    

:jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed