writes:
| Ça dépend. C'est un comportement indéfini selon la norme. Donc,
| quoiqu'en fasse le compilateur, il a raison.
Bof. Si mon programme est
const int NULL = 0;
int main() { return NULL; }
où est le comportement indéfini ?
kanze@gabi-soft.fr writes:
| Ça dépend. C'est un comportement indéfini selon la norme. Donc,
| quoiqu'en fasse le compilateur, il a raison.
Bof. Si mon programme est
const int NULL = 0;
int main() { return NULL; }
où est le comportement indéfini ?
writes:
| Ça dépend. C'est un comportement indéfini selon la norme. Donc,
| quoiqu'en fasse le compilateur, il a raison.
Bof. Si mon programme est
const int NULL = 0;
int main() { return NULL; }
où est le comportement indéfini ?
Bof. Si mon programme est
const int NULL = 0;
int main() { return NULL; }
Bof. Si mon programme est
const int NULL = 0;
int main() { return NULL; }
Bof. Si mon programme est
const int NULL = 0;
int main() { return NULL; }
On Fri, 4 Feb 2005 06:55:50 +0100, "Ivan Vecerina"
:Pour ma part, j'utilise tout simplement 00 quand la valeur
représente un pointeur
Une notation octale pour un pointeur ?
;-)
On Fri, 4 Feb 2005 06:55:50 +0100, "Ivan Vecerina"
<NOT_VALID_please_use_contact_webform@vecerina.com>:
Pour ma part, j'utilise tout simplement 00 quand la valeur
représente un pointeur
Une notation octale pour un pointeur ?
;-)
On Fri, 4 Feb 2005 06:55:50 +0100, "Ivan Vecerina"
:Pour ma part, j'utilise tout simplement 00 quand la valeur
représente un pointeur
Une notation octale pour un pointeur ?
;-)
writes:
| > Il indique également pour ceux qui voudraient continuer à
| > utiliser NULL d'en faire la déclaration suivante:
| > const int NULL = 0;
| C'est illégal, au moins si tu inclus le moindre en-tête. Ne
| le fais pas, en aucun cas.
C'est invalide seulement s'il inclut un en-tête standard. Mais
s'il n'en inclut pas ?
À lire le message de Philippe, il s'intérroge, entre autres,
sur d'éventuels problèmes de liaison posés par quelque chose
comme
const int foo = 0;
dans un fichier d'en-tête qu'on inclut dans différents
fichiers d'implémentation faisant partie d'un programme. Dans
son message, foo était NULL mais la phrase clé en ce qui
concerne le problème de liaison est :
# Cependant, j'ai peur qu'en faisant une telle déclaration
# dans un .hpp, le compilateur me cré un symbole (au sens
# "linkage" du terme) pour la constante (i.e. une sorte de
# variable globale non-modifiable) par fichier .cpp incluant
# le fameux header.
# Au final, l'étape de link risque d'etre douloureuse!!!!
| Si tu veux utiliser NULL, il n'y a qu'une seule façon de
| l'avoir :
| #include <stddef.h>
| (OK, il y en a plusieurs, parce qu'à la place de <stddef.h>,
| tu peux utiliser <cstddef>, <stdlib.h>, <stdio.h>, ...)
| NULL fait partie de la norme. C'est du C++ standard. Tu n'as
| pas le droit de le définir toi-même.
Puisque tu es distrait par NULL, s/NULL/foo/ et recommence.
[...]
| > (i.e. une sorte de variable globale non-modifiable) par
| > fichier .cpp incluant le fameux header.
| Il « crée » ce que tu lui démande, c-à-d une variable const
| de type int, sans linkage.
chapitres et versets ?
kanze@gabi-soft.fr writes:
| > Il indique également pour ceux qui voudraient continuer à
| > utiliser NULL d'en faire la déclaration suivante:
| > const int NULL = 0;
| C'est illégal, au moins si tu inclus le moindre en-tête. Ne
| le fais pas, en aucun cas.
C'est invalide seulement s'il inclut un en-tête standard. Mais
s'il n'en inclut pas ?
À lire le message de Philippe, il s'intérroge, entre autres,
sur d'éventuels problèmes de liaison posés par quelque chose
comme
const int foo = 0;
dans un fichier d'en-tête qu'on inclut dans différents
fichiers d'implémentation faisant partie d'un programme. Dans
son message, foo était NULL mais la phrase clé en ce qui
concerne le problème de liaison est :
# Cependant, j'ai peur qu'en faisant une telle déclaration
# dans un .hpp, le compilateur me cré un symbole (au sens
# "linkage" du terme) pour la constante (i.e. une sorte de
# variable globale non-modifiable) par fichier .cpp incluant
# le fameux header.
# Au final, l'étape de link risque d'etre douloureuse!!!!
| Si tu veux utiliser NULL, il n'y a qu'une seule façon de
| l'avoir :
| #include <stddef.h>
| (OK, il y en a plusieurs, parce qu'à la place de <stddef.h>,
| tu peux utiliser <cstddef>, <stdlib.h>, <stdio.h>, ...)
| NULL fait partie de la norme. C'est du C++ standard. Tu n'as
| pas le droit de le définir toi-même.
Puisque tu es distrait par NULL, s/NULL/foo/ et recommence.
[...]
| > (i.e. une sorte de variable globale non-modifiable) par
| > fichier .cpp incluant le fameux header.
| Il « crée » ce que tu lui démande, c-à-d une variable const
| de type int, sans linkage.
chapitres et versets ?
writes:
| > Il indique également pour ceux qui voudraient continuer à
| > utiliser NULL d'en faire la déclaration suivante:
| > const int NULL = 0;
| C'est illégal, au moins si tu inclus le moindre en-tête. Ne
| le fais pas, en aucun cas.
C'est invalide seulement s'il inclut un en-tête standard. Mais
s'il n'en inclut pas ?
À lire le message de Philippe, il s'intérroge, entre autres,
sur d'éventuels problèmes de liaison posés par quelque chose
comme
const int foo = 0;
dans un fichier d'en-tête qu'on inclut dans différents
fichiers d'implémentation faisant partie d'un programme. Dans
son message, foo était NULL mais la phrase clé en ce qui
concerne le problème de liaison est :
# Cependant, j'ai peur qu'en faisant une telle déclaration
# dans un .hpp, le compilateur me cré un symbole (au sens
# "linkage" du terme) pour la constante (i.e. une sorte de
# variable globale non-modifiable) par fichier .cpp incluant
# le fameux header.
# Au final, l'étape de link risque d'etre douloureuse!!!!
| Si tu veux utiliser NULL, il n'y a qu'une seule façon de
| l'avoir :
| #include <stddef.h>
| (OK, il y en a plusieurs, parce qu'à la place de <stddef.h>,
| tu peux utiliser <cstddef>, <stdlib.h>, <stdio.h>, ...)
| NULL fait partie de la norme. C'est du C++ standard. Tu n'as
| pas le droit de le définir toi-même.
Puisque tu es distrait par NULL, s/NULL/foo/ et recommence.
[...]
| > (i.e. une sorte de variable globale non-modifiable) par
| > fichier .cpp incluant le fameux header.
| Il « crée » ce que tu lui démande, c-à-d une variable const
| de type int, sans linkage.
chapitres et versets ?
writes:
| Gabriel Dos Reis wrote:
| > Philippe Mesmeur writes:
| > | Dans la Bible, l'ami Stroustrup conseil d'utiliser 0 à
| > | la place de NULL. Il indique également pour ceux qui
| > | voudraient continuer à utiliser NULL d'en faire la
| > | déclaration suivante:
| > | const int NULL = 0;
| > | Cependant, j'ai peur qu'en faisant une telle déclaration
| > | dans un .hpp, le compilateur me cré un symbole (au sens
| > | "linkage" du terme) pour la constante (i.e. une sorte de
| > | variable globale non-modifiable) par fichier .cpp
| > | incluant le fameux header.
| > should not happen.
| Ça dépend. C'est un comportement indéfini selon la norme.
| Donc, quoiqu'en fasse le compilateur, il a raison.
Bof. Si mon programme est
const int NULL = 0;
int main() { return NULL; }
où est le comportement indéfini ?
| Si le nom est NIL, ou NUL, ou quelque chose d'autre,
| évidemment, il doit pas y avoir de problème.
| > | Au final, l'étape de link risque d'etre douloureuse!!!!
| > Non.
| > | Apres quelques tests (un peu trop à la va-vite je dois
| > | l'avouer) il semblerait que:
| > | - GCC) arrive linker SI la variable est "const" dans le
| > | cas contraire, il n'y parvient pas!!!
| > Oui, et c'est ce que demande C++ depuis très longtemps. C'est
| > pour ça qu'il a dit
| > const int NULL = 0;
| > et non
| > int NULL = 0;
| > Chaque mot a son importance.
| Je crois que l'intérêt principal du const ici, c'est pour
| qu'on n'écrive pas NULL = 3 dans une fonction par erreur.
C'est que tu n'as pas encore compris « const », mais ce n'est
pas grave. Voir plus bas.
| Évidemment, ça serait plus cohérent d'écrire :
| static int const toto = 0 ;
| pour que le linkage soit apparent.
| > | - Visual 6.0) n'arrive jamais à linker
| > Visual 6.0 n'arrive pas à faire beaucoup de choses.
| Tu t'en es réelement servi, ou tu répètes des maudisances.
| Je connais des gens qui font beaucoup avec VC++ 6.0.
oui mais en quoi cela est-il en contradiction avec « n'arrive
pas à faire beaucoup de choses » ?
| En fait, il n'y a pas de problème ici avec VC++.
Huh.
| > | De plus je pense que sa proposition est assez moyenne
| > | car meme si je peux - dans un de mes headers - redéfinir
| > | NULL par "const int NULL = 0;" je cours de grands
| > | risques avec l'inclusion de headers standards: mon NULL
| > | rentrera en conflit avec le NULL standard et se dernier
| > | remplacera le miens au préprocessing pour me donner un
| > | résultat assez ... tordu!!!
| > Oui. Mais alors peux-tu citer exactement ce qu'il a écrit ?
| Je serais intéressé aussi.
Tu est fatigant.
http://groups-beta.google.com/group/fr.comp.lang.c++/messages/e3876e147ea41 420,ae88d5df21c44df7,ae96d6d557729a52,ffb50bfd02464a9a,f08293fccfc8d97a,9da ea3cce0b66b85,1ff90b08d68dfd2a,6865364935c336aa,45d9bbbebdd7e6c4,3cd7a2e539 b45d99?thread_id…3999f7d9420178&mode=thread&noheader=1&q=if+you+f eel+you+must+group:fr.comp.lang.c%2B%2B#doc_ae88d5df21c44df7
Un certain KANZE James y est abondamment intervenu. Toute
ressemblance est une pure coincidence.
kanze@gabi-soft.fr writes:
| Gabriel Dos Reis wrote:
| > Philippe Mesmeur <philippe.mesmeur@noos.fr> writes:
| > | Dans la Bible, l'ami Stroustrup conseil d'utiliser 0 à
| > | la place de NULL. Il indique également pour ceux qui
| > | voudraient continuer à utiliser NULL d'en faire la
| > | déclaration suivante:
| > | const int NULL = 0;
| > | Cependant, j'ai peur qu'en faisant une telle déclaration
| > | dans un .hpp, le compilateur me cré un symbole (au sens
| > | "linkage" du terme) pour la constante (i.e. une sorte de
| > | variable globale non-modifiable) par fichier .cpp
| > | incluant le fameux header.
| > should not happen.
| Ça dépend. C'est un comportement indéfini selon la norme.
| Donc, quoiqu'en fasse le compilateur, il a raison.
Bof. Si mon programme est
const int NULL = 0;
int main() { return NULL; }
où est le comportement indéfini ?
| Si le nom est NIL, ou NUL, ou quelque chose d'autre,
| évidemment, il doit pas y avoir de problème.
| > | Au final, l'étape de link risque d'etre douloureuse!!!!
| > Non.
| > | Apres quelques tests (un peu trop à la va-vite je dois
| > | l'avouer) il semblerait que:
| > | - GCC) arrive linker SI la variable est "const" dans le
| > | cas contraire, il n'y parvient pas!!!
| > Oui, et c'est ce que demande C++ depuis très longtemps. C'est
| > pour ça qu'il a dit
| > const int NULL = 0;
| > et non
| > int NULL = 0;
| > Chaque mot a son importance.
| Je crois que l'intérêt principal du const ici, c'est pour
| qu'on n'écrive pas NULL = 3 dans une fonction par erreur.
C'est que tu n'as pas encore compris « const », mais ce n'est
pas grave. Voir plus bas.
| Évidemment, ça serait plus cohérent d'écrire :
| static int const toto = 0 ;
| pour que le linkage soit apparent.
| > | - Visual 6.0) n'arrive jamais à linker
| > Visual 6.0 n'arrive pas à faire beaucoup de choses.
| Tu t'en es réelement servi, ou tu répètes des maudisances.
| Je connais des gens qui font beaucoup avec VC++ 6.0.
oui mais en quoi cela est-il en contradiction avec « n'arrive
pas à faire beaucoup de choses » ?
| En fait, il n'y a pas de problème ici avec VC++.
Huh.
| > | De plus je pense que sa proposition est assez moyenne
| > | car meme si je peux - dans un de mes headers - redéfinir
| > | NULL par "const int NULL = 0;" je cours de grands
| > | risques avec l'inclusion de headers standards: mon NULL
| > | rentrera en conflit avec le NULL standard et se dernier
| > | remplacera le miens au préprocessing pour me donner un
| > | résultat assez ... tordu!!!
| > Oui. Mais alors peux-tu citer exactement ce qu'il a écrit ?
| Je serais intéressé aussi.
Tu est fatigant.
http://groups-beta.google.com/group/fr.comp.lang.c++/messages/e3876e147ea41 420,ae88d5df21c44df7,ae96d6d557729a52,ffb50bfd02464a9a,f08293fccfc8d97a,9da ea3cce0b66b85,1ff90b08d68dfd2a,6865364935c336aa,45d9bbbebdd7e6c4,3cd7a2e539 b45d99?thread_id=853999f7d9420178&mode=thread&noheader=1&q=if+you+f eel+you+must+group:fr.comp.lang.c%2B%2B#doc_ae88d5df21c44df7
Un certain KANZE James y est abondamment intervenu. Toute
ressemblance est une pure coincidence.
writes:
| Gabriel Dos Reis wrote:
| > Philippe Mesmeur writes:
| > | Dans la Bible, l'ami Stroustrup conseil d'utiliser 0 à
| > | la place de NULL. Il indique également pour ceux qui
| > | voudraient continuer à utiliser NULL d'en faire la
| > | déclaration suivante:
| > | const int NULL = 0;
| > | Cependant, j'ai peur qu'en faisant une telle déclaration
| > | dans un .hpp, le compilateur me cré un symbole (au sens
| > | "linkage" du terme) pour la constante (i.e. une sorte de
| > | variable globale non-modifiable) par fichier .cpp
| > | incluant le fameux header.
| > should not happen.
| Ça dépend. C'est un comportement indéfini selon la norme.
| Donc, quoiqu'en fasse le compilateur, il a raison.
Bof. Si mon programme est
const int NULL = 0;
int main() { return NULL; }
où est le comportement indéfini ?
| Si le nom est NIL, ou NUL, ou quelque chose d'autre,
| évidemment, il doit pas y avoir de problème.
| > | Au final, l'étape de link risque d'etre douloureuse!!!!
| > Non.
| > | Apres quelques tests (un peu trop à la va-vite je dois
| > | l'avouer) il semblerait que:
| > | - GCC) arrive linker SI la variable est "const" dans le
| > | cas contraire, il n'y parvient pas!!!
| > Oui, et c'est ce que demande C++ depuis très longtemps. C'est
| > pour ça qu'il a dit
| > const int NULL = 0;
| > et non
| > int NULL = 0;
| > Chaque mot a son importance.
| Je crois que l'intérêt principal du const ici, c'est pour
| qu'on n'écrive pas NULL = 3 dans une fonction par erreur.
C'est que tu n'as pas encore compris « const », mais ce n'est
pas grave. Voir plus bas.
| Évidemment, ça serait plus cohérent d'écrire :
| static int const toto = 0 ;
| pour que le linkage soit apparent.
| > | - Visual 6.0) n'arrive jamais à linker
| > Visual 6.0 n'arrive pas à faire beaucoup de choses.
| Tu t'en es réelement servi, ou tu répètes des maudisances.
| Je connais des gens qui font beaucoup avec VC++ 6.0.
oui mais en quoi cela est-il en contradiction avec « n'arrive
pas à faire beaucoup de choses » ?
| En fait, il n'y a pas de problème ici avec VC++.
Huh.
| > | De plus je pense que sa proposition est assez moyenne
| > | car meme si je peux - dans un de mes headers - redéfinir
| > | NULL par "const int NULL = 0;" je cours de grands
| > | risques avec l'inclusion de headers standards: mon NULL
| > | rentrera en conflit avec le NULL standard et se dernier
| > | remplacera le miens au préprocessing pour me donner un
| > | résultat assez ... tordu!!!
| > Oui. Mais alors peux-tu citer exactement ce qu'il a écrit ?
| Je serais intéressé aussi.
Tu est fatigant.
http://groups-beta.google.com/group/fr.comp.lang.c++/messages/e3876e147ea41 420,ae88d5df21c44df7,ae96d6d557729a52,ffb50bfd02464a9a,f08293fccfc8d97a,9da ea3cce0b66b85,1ff90b08d68dfd2a,6865364935c336aa,45d9bbbebdd7e6c4,3cd7a2e539 b45d99?thread_id…3999f7d9420178&mode=thread&noheader=1&q=if+you+f eel+you+must+group:fr.comp.lang.c%2B%2B#doc_ae88d5df21c44df7
Un certain KANZE James y est abondamment intervenu. Toute
ressemblance est une pure coincidence.