Quelle est la maniere la plus simple pour avoir des variables globales
en C++ svp ?
Certains preconisent de les mettre dans des cpp, d'autres dans des .h
Du genre
1. init.h
2. .../...
3. #ifdef ALLOC_GLOBAL
4. int toto;
5. int tata = 93893; //Avec une valeur de départ
6. MaStruct titi;
7. #else
8. extern int toto;
9. extern int tata; //!!! Ne pas redonner de valeur avec
"extern"
10. extern MaStruct titi;
11. #endif
Quelle est la maniere la plus simple pour avoir des variables globales en C++ svp ?
Certains preconisent de les mettre dans des cpp, d'autres dans des .h
Du genre
1. init.h 2. .../... 3. #ifdef ALLOC_GLOBAL 4. int toto; 5. int tata = 93893; //Avec une valeur de départ 6. MaStruct titi; 7. #else 8. extern int toto; 9. extern int tata; //!!! Ne pas redonner de valeur avec "extern" 10. extern MaStruct titi; 11. #endif
Globalement, cette méthode consiste à se donner beaucoup de mal pour mettre dans le même fichier ce qui devrait être dans deux fichiers distincts.
Dans le .hpp: la déclaration (extern) Dans le .cpp: la définition (avec initialisation)
Ceci dit, pourquoi faire une variable globale surtout ?
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
In article <mn.7a267d4c5b3e16b7.21643@free.fr>, Michael Moreno wrote:
Bonjour,
Quelle est la maniere la plus simple pour avoir des variables globales
en C++ svp ?
Certains preconisent de les mettre dans des cpp, d'autres dans des .h
Du genre
1. init.h
2. .../...
3. #ifdef ALLOC_GLOBAL
4. int toto;
5. int tata = 93893; //Avec une valeur de départ
6. MaStruct titi;
7. #else
8. extern int toto;
9. extern int tata; //!!! Ne pas redonner de valeur avec
"extern"
10. extern MaStruct titi;
11. #endif
Globalement, cette méthode consiste à se donner beaucoup de mal
pour mettre dans le même fichier ce qui devrait être dans deux
fichiers distincts.
Dans le .hpp: la déclaration (extern)
Dans le .cpp: la définition (avec initialisation)
Ceci dit, pourquoi faire une variable globale surtout ?
Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.
Quelle est la maniere la plus simple pour avoir des variables globales en C++ svp ?
Certains preconisent de les mettre dans des cpp, d'autres dans des .h
Du genre
1. init.h 2. .../... 3. #ifdef ALLOC_GLOBAL 4. int toto; 5. int tata = 93893; //Avec une valeur de départ 6. MaStruct titi; 7. #else 8. extern int toto; 9. extern int tata; //!!! Ne pas redonner de valeur avec "extern" 10. extern MaStruct titi; 11. #endif
Globalement, cette méthode consiste à se donner beaucoup de mal pour mettre dans le même fichier ce qui devrait être dans deux fichiers distincts.
Dans le .hpp: la déclaration (extern) Dans le .cpp: la définition (avec initialisation)
Ceci dit, pourquoi faire une variable globale surtout ?
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Michael Moreno
Merci
Ceci dit, pourquoi faire une variable globale surtout ?
Dans une appli Multi-thread c++ qui recoit des appel callback en C, a part avoir des variables globales por gerer certains cas, je ne vois pas comment faire. Sans les appels callback d'une appli exterieure, c'est facile de s'en passer.
-- ---- http://michael.moreno.free.fr/
Merci
Ceci dit, pourquoi faire une variable globale surtout ?
Dans une appli Multi-thread c++ qui recoit des appel callback en C, a
part avoir des variables globales por gerer certains cas, je ne vois
pas comment faire. Sans les appels callback d'une appli exterieure,
c'est facile de s'en passer.
Ceci dit, pourquoi faire une variable globale surtout ?
Dans une appli Multi-thread c++ qui recoit des appel callback en C, a part avoir des variables globales por gerer certains cas, je ne vois pas comment faire. Sans les appels callback d'une appli exterieure, c'est facile de s'en passer.
-- ---- http://michael.moreno.free.fr/
Marc Boyer
Michael Moreno wrote:
Merci
Ceci dit, pourquoi faire une variable globale surtout ?
Dans une appli Multi-thread c++ qui recoit des appel callback en C, a part avoir des variables globales por gerer certains cas, je ne vois pas comment faire.
Ben, même en C, il y avait le célèbre couple get/set qui manipule une variable locale au module (et qui dans un contexte multi-thread permet de mettre un lock/unlock autour si besoin). En C++, on préfère souvent une classe singleton.
Après, peut-être qu'il y a des contraintes dans ton appli qui font qu'aucune de ces deux approches n'est la bonne.
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Michael Moreno wrote:
Merci
Ceci dit, pourquoi faire une variable globale surtout ?
Dans une appli Multi-thread c++ qui recoit des appel callback en C, a
part avoir des variables globales por gerer certains cas, je ne vois
pas comment faire.
Ben, même en C, il y avait le célèbre couple get/set qui manipule
une variable locale au module (et qui dans un contexte multi-thread
permet de mettre un lock/unlock autour si besoin).
En C++, on préfère souvent une classe singleton.
Après, peut-être qu'il y a des contraintes dans ton appli qui
font qu'aucune de ces deux approches n'est la bonne.
Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.
Ceci dit, pourquoi faire une variable globale surtout ?
Dans une appli Multi-thread c++ qui recoit des appel callback en C, a part avoir des variables globales por gerer certains cas, je ne vois pas comment faire.
Ben, même en C, il y avait le célèbre couple get/set qui manipule une variable locale au module (et qui dans un contexte multi-thread permet de mettre un lock/unlock autour si besoin). En C++, on préfère souvent une classe singleton.
Après, peut-être qu'il y a des contraintes dans ton appli qui font qu'aucune de ces deux approches n'est la bonne.
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Michael Moreno
Ben, même en C, il y avait le célèbre couple get/set qui manipule une variable locale au module (et qui dans un contexte multi-thread permet de mettre un lock/unlock autour si besoin). En C++, on préfère souvent une classe singleton.
Il y aussi la possibilite qu'une autre personne a ecrit le code... et que tu doives le debugge sans tout casser et en un temps record... Tu vois ce que je veux dire ?
-- ---- http://michael.moreno.free.fr/
Ben, même en C, il y avait le célèbre couple get/set qui manipule
une variable locale au module (et qui dans un contexte multi-thread
permet de mettre un lock/unlock autour si besoin).
En C++, on préfère souvent une classe singleton.
Il y aussi la possibilite qu'une autre personne a ecrit le code... et
que tu doives le debugge sans tout casser et en un temps record... Tu
vois ce que je veux dire ?
Ben, même en C, il y avait le célèbre couple get/set qui manipule une variable locale au module (et qui dans un contexte multi-thread permet de mettre un lock/unlock autour si besoin). En C++, on préfère souvent une classe singleton.
Il y aussi la possibilite qu'une autre personne a ecrit le code... et que tu doives le debugge sans tout casser et en un temps record... Tu vois ce que je veux dire ?
-- ---- http://michael.moreno.free.fr/
Marc Boyer
In article , Michael Moreno wrote:
Ben, même en C, il y avait le célèbre couple get/set qui manipule une variable locale au module (et qui dans un contexte multi-thread permet de mettre un lock/unlock autour si besoin). En C++, on préfère souvent une classe singleton.
Il y aussi la possibilite qu'une autre personne a ecrit le code... et que tu doives le debugge sans tout casser et en un temps record... Tu vois ce que je veux dire ?
C'est un problème différent, que tu n'avais pas mentionné. C'est une raison valable. Donc, tu *dois* offrir une variable partagée par compatibilité, et tu te demandes comment la déclarer. Car sinon, le couple set/get permet justement de mettre des controles utile au debug (et c'est franchement pas plus long que la variable globale, et plus evolutif).
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
In article <mn.7a4d7d4c1ac90eca.21643@free.fr>, Michael Moreno wrote:
Ben, même en C, il y avait le célèbre couple get/set qui manipule
une variable locale au module (et qui dans un contexte multi-thread
permet de mettre un lock/unlock autour si besoin).
En C++, on préfère souvent une classe singleton.
Il y aussi la possibilite qu'une autre personne a ecrit le code... et
que tu doives le debugge sans tout casser et en un temps record... Tu
vois ce que je veux dire ?
C'est un problème différent, que tu n'avais pas mentionné. C'est
une raison valable.
Donc, tu *dois* offrir une variable partagée par compatibilité,
et tu te demandes comment la déclarer.
Car sinon, le couple set/get permet justement de mettre des
controles utile au debug (et c'est franchement pas plus long
que la variable globale, et plus evolutif).
Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.
Ben, même en C, il y avait le célèbre couple get/set qui manipule une variable locale au module (et qui dans un contexte multi-thread permet de mettre un lock/unlock autour si besoin). En C++, on préfère souvent une classe singleton.
Il y aussi la possibilite qu'une autre personne a ecrit le code... et que tu doives le debugge sans tout casser et en un temps record... Tu vois ce que je veux dire ?
C'est un problème différent, que tu n'avais pas mentionné. C'est une raison valable. Donc, tu *dois* offrir une variable partagée par compatibilité, et tu te demandes comment la déclarer. Car sinon, le couple set/get permet justement de mettre des controles utile au debug (et c'est franchement pas plus long que la variable globale, et plus evolutif).
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Michael Moreno
Car sinon, le couple set/get permet justement de mettre des controles utile au debug (et c'est franchement pas plus long que la variable globale, et plus evolutif).
Oui, en effet, je viens juste de me creer une classe Boolean qui me permet d'afficher son nom et sa valeur a chaque fois qu'elle est modifiee a l'aide de OutputDebugString. C'est tres pratique pour le debug. Mais on ne peut malheureusement pas toujours le faire.
Merci beaucoup.
-- ---- http://michael.moreno.free.fr/
Car sinon, le couple set/get permet justement de mettre des
controles utile au debug (et c'est franchement pas plus long
que la variable globale, et plus evolutif).
Oui, en effet, je viens juste de me creer une classe Boolean qui me
permet d'afficher son nom et sa valeur a chaque fois qu'elle est
modifiee a l'aide de OutputDebugString. C'est tres pratique pour le
debug. Mais on ne peut malheureusement pas toujours le faire.
Car sinon, le couple set/get permet justement de mettre des controles utile au debug (et c'est franchement pas plus long que la variable globale, et plus evolutif).
Oui, en effet, je viens juste de me creer une classe Boolean qui me permet d'afficher son nom et sa valeur a chaque fois qu'elle est modifiee a l'aide de OutputDebugString. C'est tres pratique pour le debug. Mais on ne peut malheureusement pas toujours le faire.
Merci beaucoup.
-- ---- http://michael.moreno.free.fr/
Marc Boyer
In article , Michael Moreno wrote:
Car sinon, le couple set/get permet justement de mettre des controles utile au debug (et c'est franchement pas plus long que la variable globale, et plus evolutif).
Oui, en effet, je viens juste de me creer une classe Boolean qui me permet d'afficher son nom et sa valeur a chaque fois qu'elle est modifiee a l'aide de OutputDebugString. C'est tres pratique pour le debug. Mais on ne peut malheureusement pas toujours le faire.
Nous ne parlons pas de la même chose.
Ce que je te dis, c'est que plutôt qu'avoir une variable globale int Truc; tu offres dans le .hpp int getTruc(); // ou int getTruc(void); en C void setTruc( et tu mets dans le .cpp static int Truc;
Je ne vois pas trop dans quel cas c'est infaisable (à moins de ne pas avoir la main sur le code qui fait l'appel à la var globale, mais dans ce cas là, tu ne peux pas non plus définir son type à ta convenance).
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
In article <mn.7a587d4c8dd9bafb.21643@free.fr>, Michael Moreno wrote:
Car sinon, le couple set/get permet justement de mettre des
controles utile au debug (et c'est franchement pas plus long
que la variable globale, et plus evolutif).
Oui, en effet, je viens juste de me creer une classe Boolean qui me
permet d'afficher son nom et sa valeur a chaque fois qu'elle est
modifiee a l'aide de OutputDebugString. C'est tres pratique pour le
debug. Mais on ne peut malheureusement pas toujours le faire.
Nous ne parlons pas de la même chose.
Ce que je te dis, c'est que plutôt qu'avoir une variable globale
int Truc;
tu offres dans le .hpp
int getTruc(); // ou int getTruc(void); en C
void setTruc(
et tu mets dans le .cpp
static int Truc;
Je ne vois pas trop dans quel cas c'est infaisable (à moins
de ne pas avoir la main sur le code qui fait l'appel à la var
globale, mais dans ce cas là, tu ne peux pas non plus définir
son type à ta convenance).
Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.
Car sinon, le couple set/get permet justement de mettre des controles utile au debug (et c'est franchement pas plus long que la variable globale, et plus evolutif).
Oui, en effet, je viens juste de me creer une classe Boolean qui me permet d'afficher son nom et sa valeur a chaque fois qu'elle est modifiee a l'aide de OutputDebugString. C'est tres pratique pour le debug. Mais on ne peut malheureusement pas toujours le faire.
Nous ne parlons pas de la même chose.
Ce que je te dis, c'est que plutôt qu'avoir une variable globale int Truc; tu offres dans le .hpp int getTruc(); // ou int getTruc(void); en C void setTruc( et tu mets dans le .cpp static int Truc;
Je ne vois pas trop dans quel cas c'est infaisable (à moins de ne pas avoir la main sur le code qui fait l'appel à la var globale, mais dans ce cas là, tu ne peux pas non plus définir son type à ta convenance).
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Michael Moreno
Je ne vois pas trop dans quel cas c'est infaisable (à moins de ne pas avoir la main sur le code qui fait l'appel à la var globale, mais dans ce cas là, tu ne peux pas non plus définir son type à ta convenance).
C'est exactement le cas.
-- ---- http://michael.moreno.free.fr/
Je ne vois pas trop dans quel cas c'est infaisable (à moins
de ne pas avoir la main sur le code qui fait l'appel à la var
globale, mais dans ce cas là, tu ne peux pas non plus définir
son type à ta convenance).
Je ne vois pas trop dans quel cas c'est infaisable (à moins de ne pas avoir la main sur le code qui fait l'appel à la var globale, mais dans ce cas là, tu ne peux pas non plus définir son type à ta convenance).
C'est exactement le cas.
-- ---- http://michael.moreno.free.fr/
Marc Boyer
In article , Michael Moreno wrote:
Je ne vois pas trop dans quel cas c'est infaisable (à moins de ne pas avoir la main sur le code qui fait l'appel à la var globale, mais dans ce cas là, tu ne peux pas non plus définir son type à ta convenance).
C'est exactement le cas.
Ben, tu me dis que tu as définit un type Boolean, c'est donc que tu as quand même accès aux sources, non ?
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
In article <mn.7a6a7d4cc3fbe5e0.21643@free.fr>, Michael Moreno wrote:
Je ne vois pas trop dans quel cas c'est infaisable (à moins
de ne pas avoir la main sur le code qui fait l'appel à la var
globale, mais dans ce cas là, tu ne peux pas non plus définir
son type à ta convenance).
C'est exactement le cas.
Ben, tu me dis que tu as définit un type Boolean, c'est donc
que tu as quand même accès aux sources, non ?
Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.
Je ne vois pas trop dans quel cas c'est infaisable (à moins de ne pas avoir la main sur le code qui fait l'appel à la var globale, mais dans ce cas là, tu ne peux pas non plus définir son type à ta convenance).
C'est exactement le cas.
Ben, tu me dis que tu as définit un type Boolean, c'est donc que tu as quand même accès aux sources, non ?
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Michael Moreno
Ben, tu me dis que tu as définit un type Boolean, c'est donc que tu as quand même accès aux sources, non ?
Non, c'est pour une autre variable globale que j'ai pu le faire. Mais je ne peux pas le faire pour tout.
-- ---- http://michael.moreno.free.fr/
Ben, tu me dis que tu as définit un type Boolean, c'est donc
que tu as quand même accès aux sources, non ?
Non, c'est pour une autre variable globale que j'ai pu le faire. Mais
je ne peux pas le faire pour tout.