CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

utiliser '#define' ou 'const' ?

vsl5
vsl5
Niveau 8
16 juillet 2005 à 12:46:35

Bonjours tout le monde,

J´aimerais savoir si il vaut mieux que j´utilise le mor clé const ou #define pour définir des constantes et si ils ont une différence excepté que avec " const" on peut choisir le type de donnée.

Lapintade
Lapintade
Niveau 30
16 juillet 2005 à 13:27:55

Dans RPG Maker ?

Dans Blender ? ??

Precise de quoi tu parle ( dans le titre c´est encore mieux)

vsl5
vsl5
Niveau 8
16 juillet 2005 à 13:30:03

desolé, c´est du c ^^

Lapintade
Lapintade
Niveau 30
16 juillet 2005 à 13:32:27

le define c´est simplement pour remplacer une chaine de caractere par une autre

const, c´est pour definir une nouvelle variable.

Donc c´est pas du tout pour le meme usage.

Si par exemple tu as une valeur qui revient souvent dans ton code et que tu veux pouvoir la regler, faut utilise define.
Si tu veux laisser des reglages libre et les isolé en debut de ton programme, faut utiliser define.

const, j´utilise jamais, mais pourquoi pas.

Kouic
Kouic
Niveau 9
16 juillet 2005 à 14:12:10

"const, c´est pour definir une nouvelle variable."

Celle la je la note, ca fera marrer les potes du boulot ; )

Sinon, ca dépend du style de programmation, les personnes ayant surtout fait du C prefert souvent ( d´apres ce qeu j´ai vu) utiliser #define. Ceux qui on commencer par Java utilisent plus volontiés les " const". En regle general on arrive au meme resultat, mais personnelement je serais d´avis de conseiller les " const"... je trouve ca plus propre... affaire de gout je suppose.

LGV
LGV
Niveau 28
16 juillet 2005 à 14:16:31

pas d´accord.

les const globaux ou static const on l´avantage sur les #define d´être typés, et de ne pas pouvoir se " hacker" localement à coup de #undef / #define. Il est un poil plus contraignant d´utiliser des ( static) const, mais cela ajoute en robustesse au code. Le désavantage, c´est le coût mémoire. Bref, le #define contre le ( static) const, c´est troquer un peu de simplicité contre un peu de robustesse.
( au passage, pour des const int, des enum ça marche bien)

perso je recommande de n´utiliser les #define que pour les macro

LGV
LGV
Niveau 28
16 juillet 2005 à 14:17:25

( le " pas d´accord" allait avec Lapintade, le commentaire de Kouic étant apparu entre temps :) )

Lapintade
Lapintade
Niveau 30
16 juillet 2005 à 18:03:27

" Celle la je la note, ca fera marrer les potes du boulot ; ) "

Content de te faire rire, mais la j´apprecie pas trop. Donc explique moi ce qui te gene svp.

LGV > On est bien d´accord qu´on est en train de comparer deux chose qui sont relativement differentes ( une notation de preprocess et une declaration de variable). La comparaison est donc idiote en un sens.

De plus, un bon programmeur n´utilise pas de undef. C´est vraiment degeu.

MrGoTo
MrGoTo
Niveau 8
16 juillet 2005 à 18:16:22

Quand je peux eviter un const je le fais par exemple dans le cas d´une constante ( un nombre ) . J´utilise le const que avec les methodes de classes et les pointeurs ou reference pour m´assurer qu´ils vont pas se mettre à pointer autre chose.

Kouic
Kouic
Niveau 9
16 juillet 2005 à 19:14:24

"Content de te faire rire, mais la j´apprecie pas trop. Donc explique moi ce qui te gene svp. "

Ca ne me gene pas du tout, ca m´a amusé. C´est comme dire " une constante variable", moi les oximores involontaires ca me fait rire, désolé que tu en sois la cause et que tu n´apprécis pas trop. Je veux bien te faire un bisous pour me faire pardonner.

Histoire de pas poster pour rien et pour illustrer les dire de LGV sur le typage des constantes:

--- SOURCE ---

  1. define TRUC 10

const float fl = 10;
int truc = 12;
cout < < " division avec #define :" < < truc / TRUC < < endl;
cout < < " division avec const : " < < truc / fl < < endl;

--- OUT ----
division avec #define : 1
division avec const : 1.2

MrGoTo
MrGoTo
Niveau 8
16 juillet 2005 à 19:24:34

Est-ce que l´on peut contourner en faisant:

  1. define TRUC 10.0f

?

Lapintade
Lapintade
Niveau 30
16 juillet 2005 à 19:55:49

Je pense que oui ( je mets toujours mes variables define en virgules)

Kouic > Ok merci pour le bisous, c´est oublié. J´avoue que je l´ai trés mal pris. N´etant pas un fervant utilisateur des const, je pensais avoir dit une enorme betise et que tu voulais m´humilier publiquement :)

Pour continuer a argumenter un peu ( oui je suis plutot pour le define :) ) , je dirais qu´un define se place facilement dans un . h pour etre partagé. C´est plus lourd pour les const.

LGV
LGV
Niveau 28
16 juillet 2005 à 20:00:18

mrgoto : le pb ici, c´est que comme dit Lapintade, on a deux solutions possibles ( le #define et le ( static) const) pour une utilisation similaire ( definir des valeurs qui ne vont pas changer dans le programme, mais qui vont etre utilisé par des bouts de code.
Le define relevant du prépocesseur, à la compilation ça n´existe plus du tout, on perd donc toute notion de qualification de la donnée représentée ( une valeur entière peut alors marcher avec quoi, des char, des word, de int, des float, etc.) sans que le compilo ne rale. Quel que soit ton #define, tu peux toujours des cas foireux où le compilo ne verra rien et où le resultat peut etre " innatendu".
Les static const restent du domaine du runtime, on garde donc toute la notion de type, et on peut aussi introduire une portée pour plus de clartée. Le désavantage est que la donnée existe en mémoire, ce n´est plus une valeur de type " immediate", et cela a donc un faible cout supplémentaire

sonic66
sonic66
Niveau 10
16 juillet 2005 à 20:21:02

si on fait
const a=5;

apres on pourra plus chaner la valeur de a c´est ca?

Lapintade
Lapintade
Niveau 30
16 juillet 2005 à 20:22:23

ecris plutot

const int a=5;

En effet, tu ne peux plus la changer.

vsl5
vsl5
Niveau 8
16 juillet 2005 à 20:43:34

merci pour toute les reponse, on relisant un peu mon livre j´ai vu qu´il est ecris que en utilisant les macros et plus particulierement le mot clé #define l´insctruction etait plus rapide mais l´exécutable plus lourd. Donc si je bourre mon programme de plein de #define il sera plus lourd que si j´aurais mis des const ?

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment