#define ou variable globale

#define ou variable globale - C++ - Programmation

Marsh Posté le 14-09-2003 à 01:25:34    

Salut,
 
je ne suis pas sûr de poser la question avec les bons termes, et encore moins si cette question se pose réellement, mais vaut-il mieux utiliser un #DEFINE VARIABLE VALEUR ou une variable globale?
 
Dans quels cas utiliser l'une plutôt que l'autre?
 
Merci d'avance...


---------------
Another .Net Blog
Reply

Marsh Posté le 14-09-2003 à 01:25:34   

Reply

Marsh Posté le 14-09-2003 à 01:46:03    

si tu fait un #define  la nom de la variable sera remplace par sa valeur avant la compilation donc c comme si la variable nexistait pas , c juste pour avoir plus facile
 
 
par contre la var globale sera presente des le debut du programme, jusqua la fin et les variables globales c mal  :o

Reply

Marsh Posté le 14-09-2003 à 02:05:26    

tu peux utiliser des constantes du type
 
const type CONSTANTE;
 
pour remplacer les defines; l'avantage étant qu'elle sont gérées par le compilo lui même (et non le préprocesseur) et qu'elles "n'existent" pas à l'éxécution.


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 14-09-2003 à 09:17:58    

SchnapsMann a écrit :

qu'elles "n'existent" pas à l'éxécution.

???
 
 
t'as oublier de citer le typage.
oublier le préprocesseur, à posteriori, Stoustrup regrette d'avoir laisser le préprocesseur   [:spamafote] personnellement, je ne m'en sert jamais

Reply

Marsh Posté le 14-09-2003 à 10:12:13    

SchnapsMann a écrit :

tu peux utiliser des constantes du type
 
const type CONSTANTE;
 
pour remplacer les defines; l'avantage étant qu'elle sont gérées par le compilo lui même (et non le préprocesseur) et qu'elles "n'existent" pas à l'éxécution.


 
 
Niveau performence dans une grosse boucle, quel est le mieux :
const type CONSTANTE ou #define ?
 

Reply

Marsh Posté le 14-09-2003 à 10:24:34    

iS@mi a écrit :


 
 
Niveau performence dans une grosse boucle, quel est le mieux :
const type CONSTANTE ou #define ?
 
 

les performances sont les mêmes avec l'avantage qu'avec const, tu peux utiliser des objets, et le fais de les marquer const aide certains compilateurs. sinon pour des types intégrés, aucune différence

Reply

Marsh Posté le 14-09-2003 à 11:14:57    

Taz a écrit :

???
oublier le préprocesseur, à posteriori, Stoustrup regrette d'avoir laisser le préprocesseur   [:spamafote] personnellement, je ne m'en sert jamais


 
Le préprocesseur peut etre tres pratique parfois... évidemment, il faut pas en abuser non plus. Les const, c'est pas pour faire joli!

Reply

Marsh Posté le 14-09-2003 à 15:30:42    

La seule utilité flagrante du préprocesseur c'est ecrire des macros
de 'remplissage', style un bout de code avec un truc qui change ...
 
encore que, une peu de metaprog et zou !

Reply

Marsh Posté le 14-09-2003 à 15:32:20    

Joel F a écrit :

La seule utilité flagrante du préprocesseur c'est ecrire des macros
de 'remplissage', style un bout de code avec un truc qui change ...
 
encore que, une peu de metaprog et zou !


 
pour faire du code multi plate forme, ça sert aussi le prépro.


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 14-09-2003 à 17:22:14    

SchnapsMann a écrit :


 
pour faire du code multi plate forme, ça sert aussi le prépro.


 
Il y a d'autres moyens de le faire aussi.

Reply

Marsh Posté le 14-09-2003 à 17:22:14   

Reply

Marsh Posté le 14-09-2003 à 17:23:39    

vrai les  
#define WIN32
#else LINUX
#endif
 
servent bien :p


Message édité par Joel F le 14-09-2003 à 18:00:26
Reply

Marsh Posté le 14-09-2003 à 17:39:55    

Joel F a écrit :

vrai les  
#define WIN32
#elsif LINUX
#endif
 
servent bien :p
 

clair que quand ton code passe même pas le cpp, t'as aucun problème de portabilité  [:xp1700]

Reply

Marsh Posté le 14-09-2003 à 18:00:15    

zut m'a trompé :o

Reply

Sujets relatifs:

Leave a Replay

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