quelle serait, selon vous, la meilleure stratégie pour définir une
constante dans un .h, afin qu'elle soit accessible à l'exterieur.
J'en voie 2 :
- le #define (#define CONSTANTE 10), je n'aime pas, rien ne me garantie
que ce #define ne sera pas écrasé par la suite.
- la fonction (int GetConstante()), je ne suis pas fan non plus. Même si
cette méthode semble plus sûre, je ne garantie plus la constance de la
constante. Par exemple, rien n'interdit l'utilisateur d'écrire:
int constante = GetConstante();
constante += 2;
Il y a éventuellement une troisième voie que je ne maitrise pas trop, en
utilisant 'extern'.
On Wed, 24 Jan 2007 18:47:38 +0100, Guillaume GOURDIN :
Il me semble avoir essayé et avoir eu des problemes a l"édition de liens...
Et avec ceci ? static int const constante= 10;
Après quelques tests, il semble que le 'static' ne soit pas nécessaire, et que Sylvain avait vu juste : 'const int constante = 10;' fonctionne.
Merci d'avoir répondu si vite!
Guillaume GOURDIN
Après quelques tests, il semble que le 'static' ne soit pas nécessaire, et que Sylvain avait vu juste : 'const int constante = 10;' fonctionne.
Merci d'avoir répondu si vite!
J'ai fait d'autres tests, et en fait si je compile avec g++, tout va bien, mais j'ai effectivement un problème à l'édition de lien si je compile avec gcc. Quelqu'un a t'il une explication ?
Après quelques tests, il semble que le 'static' ne soit pas nécessaire,
et que Sylvain avait vu juste : 'const int constante = 10;' fonctionne.
Merci d'avoir répondu si vite!
J'ai fait d'autres tests, et en fait si je compile avec g++, tout va
bien, mais j'ai effectivement un problème à l'édition de lien si je
compile avec gcc. Quelqu'un a t'il une explication ?
Après quelques tests, il semble que le 'static' ne soit pas nécessaire, et que Sylvain avait vu juste : 'const int constante = 10;' fonctionne.
Merci d'avoir répondu si vite!
J'ai fait d'autres tests, et en fait si je compile avec g++, tout va bien, mais j'ai effectivement un problème à l'édition de lien si je compile avec gcc. Quelqu'un a t'il une explication ?
Fabien LE LEZ
On Wed, 24 Jan 2007 20:07:14 +0100, Guillaume GOURDIN :
J'ai fait d'autres tests, et en fait si je compile avec g++, tout va bien, mais j'ai effectivement un problème à l'édition de lien si je compile avec gcc. Quelqu'un a t'il une explication ?
J'avoue que j'ai du mal avec les constantes, cas particulier s'il en est.
[Note : 1 module = 1 .cpp, avec tous les .h #inclus]
Toutefois, si tu déclares une variable en-dehors d'une fonction, elle est automatiquement globale. Et si tu déclares la même variable dans un autre module, il y a collision au moment du link : deux variables avec la même portée et le même nom. Si tu la déclares "static", par contre, sa portée est réduite au module ; tu peux alors avoir plusieurs variables de même nom dans plusieurs modules différents.
On Wed, 24 Jan 2007 20:07:14 +0100, Guillaume GOURDIN
<gourdin-paluche@liw.fr>:
J'ai fait d'autres tests, et en fait si je compile avec g++, tout va
bien, mais j'ai effectivement un problème à l'édition de lien si je
compile avec gcc. Quelqu'un a t'il une explication ?
J'avoue que j'ai du mal avec les constantes, cas particulier s'il en
est.
[Note : 1 module = 1 .cpp, avec tous les .h #inclus]
Toutefois, si tu déclares une variable en-dehors d'une fonction, elle
est automatiquement globale. Et si tu déclares la même variable dans
un autre module, il y a collision au moment du link : deux variables
avec la même portée et le même nom.
Si tu la déclares "static", par contre, sa portée est réduite au
module ; tu peux alors avoir plusieurs variables de même nom dans
plusieurs modules différents.
On Wed, 24 Jan 2007 20:07:14 +0100, Guillaume GOURDIN :
J'ai fait d'autres tests, et en fait si je compile avec g++, tout va bien, mais j'ai effectivement un problème à l'édition de lien si je compile avec gcc. Quelqu'un a t'il une explication ?
J'avoue que j'ai du mal avec les constantes, cas particulier s'il en est.
[Note : 1 module = 1 .cpp, avec tous les .h #inclus]
Toutefois, si tu déclares une variable en-dehors d'une fonction, elle est automatiquement globale. Et si tu déclares la même variable dans un autre module, il y a collision au moment du link : deux variables avec la même portée et le même nom. Si tu la déclares "static", par contre, sa portée est réduite au module ; tu peux alors avoir plusieurs variables de même nom dans plusieurs modules différents.
Cyrille
Guillaume GOURDIN wrote:
quelle serait, selon vous, la meilleure stratégie pour définir une constante dans un .h, afin qu'elle soit accessible à l'exterieur.
int const constante = 10;
tout simplement.
Oui, et enum { constante = 10 };
aussi.
-- http://www.assemblee-nationale.fr/12/propositions/pion3372.asp Ça doit être chouette de vivre dans un pays libre...
Guillaume GOURDIN wrote:
quelle serait, selon vous, la meilleure stratégie pour définir une
constante dans un .h, afin qu'elle soit accessible à l'exterieur.
int const constante = 10;
tout simplement.
Oui, et
enum { constante = 10 };
aussi.
--
http://www.assemblee-nationale.fr/12/propositions/pion3372.asp
Ça doit être chouette de vivre dans un pays libre...
quelle serait, selon vous, la meilleure stratégie pour définir une constante dans un .h, afin qu'elle soit accessible à l'exterieur.
int const constante = 10;
tout simplement.
Oui, et enum { constante = 10 };
aussi.
-- http://www.assemblee-nationale.fr/12/propositions/pion3372.asp Ça doit être chouette de vivre dans un pays libre...
Cyrille
Après quelques tests, il semble que le 'static' ne soit pas nécessaire, et que Sylvain avait vu juste : 'const int constante = 10;' fonctionne.
Merci d'avoir répondu si vite!
J'ai fait d'autres tests, et en fait si je compile avec g++, tout va bien, mais j'ai effectivement un problème à l'édition de lien si je compile avec gcc. Quelqu'un a t'il une explication ?
Quand on veut compiler un programme C++, on utilise g++.
Extrait de "man g++":
g++ is a program that calls GCC with the default language set to C++, and automatically specifies linking against the C++ library.
J'imagine que si on explique que g++ c'est ça, ça veut dire que pour gcc, le default language est C, et qu'on ne lie pas la bibliothèque C++.
-- http://www.assemblee-nationale.fr/12/propositions/pion3372.asp Ça doit être chouette de vivre dans un pays libre...
Après quelques tests, il semble que le 'static' ne soit pas nécessaire,
et que Sylvain avait vu juste : 'const int constante = 10;' fonctionne.
Merci d'avoir répondu si vite!
J'ai fait d'autres tests, et en fait si je compile avec g++, tout va
bien, mais j'ai effectivement un problème à l'édition de lien si je
compile avec gcc. Quelqu'un a t'il une explication ?
Quand on veut compiler un programme C++, on utilise g++.
Extrait de "man g++":
g++ is a program that calls GCC with the default language set to C++,
and automatically specifies linking against the C++ library.
J'imagine que si on explique que g++ c'est ça, ça veut dire que pour
gcc, le default language est C, et qu'on ne lie pas la bibliothèque C++.
--
http://www.assemblee-nationale.fr/12/propositions/pion3372.asp
Ça doit être chouette de vivre dans un pays libre...
Après quelques tests, il semble que le 'static' ne soit pas nécessaire, et que Sylvain avait vu juste : 'const int constante = 10;' fonctionne.
Merci d'avoir répondu si vite!
J'ai fait d'autres tests, et en fait si je compile avec g++, tout va bien, mais j'ai effectivement un problème à l'édition de lien si je compile avec gcc. Quelqu'un a t'il une explication ?
Quand on veut compiler un programme C++, on utilise g++.
Extrait de "man g++":
g++ is a program that calls GCC with the default language set to C++, and automatically specifies linking against the C++ library.
J'imagine que si on explique que g++ c'est ça, ça veut dire que pour gcc, le default language est C, et qu'on ne lie pas la bibliothèque C++.
-- http://www.assemblee-nationale.fr/12/propositions/pion3372.asp Ça doit être chouette de vivre dans un pays libre...
Sylvain
Guillaume GOURDIN wrote on 24/01/2007 18:47:
quelle serait, selon vous, la meilleure stratégie pour définir une constante dans un .h, afin qu'elle soit accessible à l'exterieur.
int const constante = 10;
tout simplement.
Il me semble avoir essayé et avoir eu des problemes a l"édition de liens...
si le .h est inclus par différents .cpp (cas exceptionnel d'un projet non constitué d'un seul main.cpp -- j'ironise bien sur) il y aura une définition multiple de la constante et des plaintes du linkeur.
vous pouvez la déclarer N fois (une seule fois suffit):
.h
extern const int constante;
et la définir une seule et unique fois:
.cpp
const int constante = 100;
Sylvain.
Guillaume GOURDIN wrote on 24/01/2007 18:47:
quelle serait, selon vous, la meilleure stratégie pour définir une
constante dans un .h, afin qu'elle soit accessible à l'exterieur.
int const constante = 10;
tout simplement.
Il me semble avoir essayé et avoir eu des problemes a l"édition de liens...
si le .h est inclus par différents .cpp (cas exceptionnel d'un projet
non constitué d'un seul main.cpp -- j'ironise bien sur) il y aura une
définition multiple de la constante et des plaintes du linkeur.
vous pouvez la déclarer N fois (une seule fois suffit):
quelle serait, selon vous, la meilleure stratégie pour définir une constante dans un .h, afin qu'elle soit accessible à l'exterieur.
int const constante = 10;
tout simplement.
Il me semble avoir essayé et avoir eu des problemes a l"édition de liens...
si le .h est inclus par différents .cpp (cas exceptionnel d'un projet non constitué d'un seul main.cpp -- j'ironise bien sur) il y aura une définition multiple de la constante et des plaintes du linkeur.
vous pouvez la déclarer N fois (une seule fois suffit):
.h
extern const int constante;
et la définir une seule et unique fois:
.cpp
const int constante = 100;
Sylvain.
Bruno Causse
"Sylvain" a écrit dans le message de news: 45b7d924$0$27377$
vous pouvez la déclarer N fois (une seule fois suffit):
.h
extern const int constante;
et la définir une seule et unique fois:
.cpp
const int constante = 100;
je declare mes constantes a l'interieur des classes, je n'ai aucune variables declarés autrement(qui ne soit pas "ratachée a une classe").
est ce une bonne methode?
"Sylvain" <noSpam@mail.net> a écrit dans le message de news:
45b7d924$0$27377$ba4acef3@news.orange.fr...
vous pouvez la déclarer N fois (une seule fois suffit):
.h
extern const int constante;
et la définir une seule et unique fois:
.cpp
const int constante = 100;
je declare mes constantes a l'interieur des classes, je n'ai aucune
variables declarés autrement(qui ne soit pas "ratachée a une classe").