| > Bonjour, | > voila un p'tit problème... | > j'ai un un entête de fichier avec : | > #ifndef _WCHAR_H_ | > typedef unsigned short wchar_t | > #define _WCHAR_H_ | > et le compilateur (GCC pour ne pas le citer) me sort le message | > d'erreur : | > redeclaration of C++ built-in type 'wchar_t' | > typedef n'est pas comme son nom l'indique,une définition et non une | > déclaration? | | Je pense que ce code a pour but de contourner une limitation de vieux | compilateurs qui ne définieraient pas le type standard wchar_t. En
et tu crois qu'un tel compilateur pourrait faure quelque chose d'un code C++ écrit ces dix-quinze dernières année ?
Au vu de l'extrait de code affiché, qu'est-ce qui te fait croire qu'il date des 10-15 dernières années ?
De plus, même des compilateurs relativement récents peuvent avoir ce problème. La preuve : Boost, qui n'est pas si vieux, a du définir BOOST_NO_INTRINSIC_WCHAR_T pour gérer cette situation.
-- Loïc
Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
| > Bonjour,
| > voila un p'tit problème...
| > j'ai un un entête de fichier avec :
| > #ifndef _WCHAR_H_
| > typedef unsigned short wchar_t
| > #define _WCHAR_H_
| > et le compilateur (GCC pour ne pas le citer) me sort le message
| > d'erreur :
| > redeclaration of C++ built-in type 'wchar_t'
| > typedef n'est pas comme son nom l'indique,une définition et non une
| > déclaration?
|
| Je pense que ce code a pour but de contourner une limitation de vieux
| compilateurs qui ne définieraient pas le type standard wchar_t. En
et tu crois qu'un tel compilateur pourrait faure quelque chose d'un
code C++ écrit ces dix-quinze dernières année ?
Au vu de l'extrait de code affiché, qu'est-ce qui te fait croire qu'il
date des 10-15 dernières années ?
De plus, même des compilateurs relativement récents peuvent avoir ce
problème. La preuve : Boost, qui n'est pas si vieux, a du définir
BOOST_NO_INTRINSIC_WCHAR_T pour gérer cette situation.
| > Bonjour, | > voila un p'tit problème... | > j'ai un un entête de fichier avec : | > #ifndef _WCHAR_H_ | > typedef unsigned short wchar_t | > #define _WCHAR_H_ | > et le compilateur (GCC pour ne pas le citer) me sort le message | > d'erreur : | > redeclaration of C++ built-in type 'wchar_t' | > typedef n'est pas comme son nom l'indique,une définition et non une | > déclaration? | | Je pense que ce code a pour but de contourner une limitation de vieux | compilateurs qui ne définieraient pas le type standard wchar_t. En
et tu crois qu'un tel compilateur pourrait faure quelque chose d'un code C++ écrit ces dix-quinze dernières année ?
Au vu de l'extrait de code affiché, qu'est-ce qui te fait croire qu'il date des 10-15 dernières années ?
De plus, même des compilateurs relativement récents peuvent avoir ce problème. La preuve : Boost, qui n'est pas si vieux, a du définir BOOST_NO_INTRINSIC_WCHAR_T pour gérer cette situation.
-- Loïc
kanze
Gabriel Dos Reis wrote:
Loïc Joly writes:
| > voila un p'tit problème... | > j'ai un un entête de fichier avec : | > #ifndef _WCHAR_H_ | > typedef unsigned short wchar_t | > #define _WCHAR_H_ | > et le compilateur (GCC pour ne pas le citer) me sort le | > message d'erreur : | > redeclaration of C++ built-in type 'wchar_t' | > typedef n'est pas comme son nom l'indique,une définition et non une
| > déclaration?
| Je pense que ce code a pour but de contourner une limitation | de vieux compilateurs qui ne définieraient pas le type | standard wchar_t. En
et tu crois qu'un tel compilateur pourrait faure quelque chose d'un code C++ écrit ces dix-quinze dernières année ?
Ça dépend de comment on l'écrit. Si une des exigeances du projet est de supporter des anciens compilateurs, on peut écrire du code qui le fait. (S'il faut, on peut même encore écrire du C:-).) Certains projets essaient de le faire, considère http://www.mozilla.org/hacking/mozilla-style-guide.html.
En ce qui concerne wchar_t, j'ai un vague souvenir qu'il y avait un compilateur il n'y a pas si longtemps qui ne le supportait pas correctement (VC++ 5.0 ?). Mais je ne suis pas sûr ; ce n'était pas un compilateur que j'utilisais regulièrement, et je ne me sers pas beaucoup de wchar_t non plus.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Gabriel Dos Reis wrote:
Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
| > voila un p'tit problème...
| > j'ai un un entête de fichier avec :
| > #ifndef _WCHAR_H_
| > typedef unsigned short wchar_t
| > #define _WCHAR_H_
| > et le compilateur (GCC pour ne pas le citer) me sort le
| > message d'erreur :
| > redeclaration of C++ built-in type 'wchar_t'
| > typedef n'est pas comme son nom l'indique,une définition et non
une
| > déclaration?
| Je pense que ce code a pour but de contourner une limitation
| de vieux compilateurs qui ne définieraient pas le type
| standard wchar_t. En
et tu crois qu'un tel compilateur pourrait faure quelque chose
d'un code C++ écrit ces dix-quinze dernières année ?
Ça dépend de comment on l'écrit. Si une des exigeances du projet
est de supporter des anciens compilateurs, on peut écrire du
code qui le fait. (S'il faut, on peut même encore écrire du
C:-).) Certains projets essaient de le faire, considère
http://www.mozilla.org/hacking/mozilla-style-guide.html.
En ce qui concerne wchar_t, j'ai un vague souvenir qu'il y avait
un compilateur il n'y a pas si longtemps qui ne le supportait
pas correctement (VC++ 5.0 ?). Mais je ne suis pas sûr ; ce
n'était pas un compilateur que j'utilisais regulièrement, et je
ne me sers pas beaucoup de wchar_t non plus.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
| > voila un p'tit problème... | > j'ai un un entête de fichier avec : | > #ifndef _WCHAR_H_ | > typedef unsigned short wchar_t | > #define _WCHAR_H_ | > et le compilateur (GCC pour ne pas le citer) me sort le | > message d'erreur : | > redeclaration of C++ built-in type 'wchar_t' | > typedef n'est pas comme son nom l'indique,une définition et non une
| > déclaration?
| Je pense que ce code a pour but de contourner une limitation | de vieux compilateurs qui ne définieraient pas le type | standard wchar_t. En
et tu crois qu'un tel compilateur pourrait faure quelque chose d'un code C++ écrit ces dix-quinze dernières année ?
Ça dépend de comment on l'écrit. Si une des exigeances du projet est de supporter des anciens compilateurs, on peut écrire du code qui le fait. (S'il faut, on peut même encore écrire du C:-).) Certains projets essaient de le faire, considère http://www.mozilla.org/hacking/mozilla-style-guide.html.
En ce qui concerne wchar_t, j'ai un vague souvenir qu'il y avait un compilateur il n'y a pas si longtemps qui ne le supportait pas correctement (VC++ 5.0 ?). Mais je ne suis pas sûr ; ce n'était pas un compilateur que j'utilisais regulièrement, et je ne me sers pas beaucoup de wchar_t non plus.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Samuel Krempp
le Thursday 31 March 2005 15:45, écrivit :
Ce qui me pose un problème c'est que ce n'est pas une entête à moi justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce que j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a eviter la redefinition ou redeclaration. Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui merde soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lorsque wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors que c'est nullement universel.
-- Sam
le Thursday 31 March 2005 15:45, p.thisse@tiscali.fr écrivit :
Ce qui me pose un problème c'est que ce n'est pas une entête à moi
justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce que
j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a
eviter la redefinition ou redeclaration.
Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui merde
soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé
marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lorsque
wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors que c'est
nullement universel.
Ce qui me pose un problème c'est que ce n'est pas une entête à moi justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce que j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a eviter la redefinition ou redeclaration. Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui merde soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lorsque wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors que c'est nullement universel.
-- Sam
pascal
le Thursday 31 March 2005 15:45, écrivit :
Ce qui me pose un problème c'est que ce n'est pas une entête à mo i justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce qu e j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a eviter la redefinition ou redeclaration. Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui me rde soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lo rsque wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors q ue c'est nullement universel.
cette macro a bien un rapport avec l'inclusion du fichier wchar.h ?
le Thursday 31 March 2005 15:45, p.thisse@tiscali.fr écrivit :
Ce qui me pose un problème c'est que ce n'est pas une entête à mo i
justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce qu e
j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a
eviter la redefinition ou redeclaration.
Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui me rde
soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé
marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lo rsque
wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors q ue c'est
nullement universel.
cette macro a bien un rapport avec l'inclusion du fichier wchar.h ?
Ce qui me pose un problème c'est que ce n'est pas une entête à mo i justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce qu e j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a eviter la redefinition ou redeclaration. Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui me rde soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lo rsque wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors q ue c'est nullement universel.
cette macro a bien un rapport avec l'inclusion du fichier wchar.h ?
pascal
le Thursday 31 March 2005 15:45, écrivit :
Ce qui me pose un problème c'est que ce n'est pas une entête à mo i justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce qu e j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a eviter la redefinition ou redeclaration. Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui me rde soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lo rsque wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors q ue c'est nullement universel.
comment je trouve ou est définie la macro _WCHAR_H_ ?
ou je trouve ou est déclaré wchar_t la première fois?
le Thursday 31 March 2005 15:45, p.thisse@tiscali.fr écrivit :
Ce qui me pose un problème c'est que ce n'est pas une entête à mo i
justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce qu e
j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a
eviter la redefinition ou redeclaration.
Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui me rde
soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé
marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lo rsque
wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors q ue c'est
nullement universel.
comment je trouve ou est définie la macro _WCHAR_H_ ?
ou je trouve ou est déclaré wchar_t la première fois?
Ce qui me pose un problème c'est que ce n'est pas une entête à mo i justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce qu e j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a eviter la redefinition ou redeclaration. Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui me rde soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lo rsque wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors q ue c'est nullement universel.
comment je trouve ou est définie la macro _WCHAR_H_ ?
ou je trouve ou est déclaré wchar_t la première fois?
Serge Paccalin
Le vendredi 1 avril 2005 à 12:43:05, pascal a écrit dans fr.comp.lang.c++ :
le Thursday 31 March 2005 15:45, écrivit :
Ce qui me pose un problème c'est que ce n'est pas une entête à moi justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce que j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a eviter la redefinition ou redeclaration. Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui merde soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lorsque wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors que c'est nullement universel.
comment je trouve ou est définie la macro _WCHAR_H_ ?
Manifestement, elle n'est pas définie, autrment, tu n'aurais pas de problème.
ou je trouve ou est déclaré wchar_t la première fois?
Le message d'erreur te renseigne à ce sujet : « C++ built-in type 'wchar_t' ». C'est un type qui fait partie du C++, au même titre que char, int, float, etc. Pas besoin de déclaration où que ce soit.
-- ___________ 2005-04-01 12:55:12 _/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net _L_) Il faut donc que les hommes commencent -'(__) par n'être pas fanatiques pour mériter _/___(_) la tolérance. -- Voltaire, 1763
Le vendredi 1 avril 2005 à 12:43:05, pascal a écrit dans
fr.comp.lang.c++ :
le Thursday 31 March 2005 15:45, p.thisse@tiscali.fr écrivit :
Ce qui me pose un problème c'est que ce n'est pas une entête à moi
justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce que
j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a
eviter la redefinition ou redeclaration.
Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui merde
soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé
marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lorsque
wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors que c'est
nullement universel.
comment je trouve ou est définie la macro _WCHAR_H_ ?
Manifestement, elle n'est pas définie, autrment, tu n'aurais pas de
problème.
ou je trouve ou est déclaré wchar_t la première fois?
Le message d'erreur te renseigne à ce sujet : « C++ built-in type
'wchar_t' ». C'est un type qui fait partie du C++, au même titre que
char, int, float, etc. Pas besoin de déclaration où que ce soit.
--
___________ 2005-04-01 12:55:12
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
Le vendredi 1 avril 2005 à 12:43:05, pascal a écrit dans fr.comp.lang.c++ :
le Thursday 31 March 2005 15:45, écrivit :
Ce qui me pose un problème c'est que ce n'est pas une entête à moi justement,mais une entete standard fournit avec l'IDE Devcpp,et a ce que j'ai compris jusqu'a maintenant c'est que #ifndef/#endif servait a eviter la redefinition ou redeclaration. Et la cela ne fonctionne pas,alors c'est soit le préprocesseur qui merde soit la librairie standard.
nan c'est Devcpp. Je sais pas trop comment ce bout de code est censé marcher. J'imagine qu'il suppose que la macro _WCHAR_H_ est définie lorsque wchar_t est déclaré (d'après la norme, c'est tjrs le cas), alors que c'est nullement universel.
comment je trouve ou est définie la macro _WCHAR_H_ ?
Manifestement, elle n'est pas définie, autrment, tu n'aurais pas de problème.
ou je trouve ou est déclaré wchar_t la première fois?
Le message d'erreur te renseigne à ce sujet : « C++ built-in type 'wchar_t' ». C'est un type qui fait partie du C++, au même titre que char, int, float, etc. Pas besoin de déclaration où que ce soit.
-- ___________ 2005-04-01 12:55:12 _/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net _L_) Il faut donc que les hommes commencent -'(__) par n'être pas fanatiques pour mériter _/___(_) la tolérance. -- Voltaire, 1763
Anthony Fleury
pascal wrote:
cette macro a bien un rapport avec l'inclusion du fichier wchar.h ?
Oui et non, à mon avis il faudrait prendre une version plus à jour de Dev C++, car la mienne n'a pas l'air d'avoir ce problème :
:/mnt/XP/Dev-Cpp/include$ grep -nri "typedef unsigned short wchar_t" * winnt.h:72:typedef unsigned short wchar_t; :/mnt/XP/Dev-Cpp/include$
on voit clairement que en C++, ce typedef ne sera JAMAIS effectué.
Quant au _WCHAR_H_ il a en effet rapport avec l'inclusion de wchar.h : :/mnt/XP/Dev-Cpp/include$ grep -nri _WCHAR_H_ * wchar.h:14:#ifndef _WCHAR_H_ wchar.h:15:#define _WCHAR_H_ wchar.h:344:#endif /* not _WCHAR_H_ */ :/mnt/XP/Dev-Cpp/include$
Il évite les multiples inclusions de cet en-tête.
Quelle version de Dev-c++ ? Et quelle en-tête contient ce problème avec le typedef entre les ifndef endif de _WCHAR_H_ ? Je pencherais pour un petit problème dans cette version avec un conflit de nom entre deux en-tête.
-- Anthony Fleury
pascal wrote:
cette macro a bien un rapport avec l'inclusion du fichier wchar.h ?
Oui et non, à mon avis il faudrait prendre une version plus à jour de Dev
C++, car la mienne n'a pas l'air d'avoir ce problème :
anthony@prog:/mnt/XP/Dev-Cpp/include$ grep -nri "typedef unsigned short
wchar_t" *
winnt.h:72:typedef unsigned short wchar_t;
anthony@prog:/mnt/XP/Dev-Cpp/include$
on voit clairement que en C++, ce typedef ne sera JAMAIS effectué.
Quant au _WCHAR_H_ il a en effet rapport avec l'inclusion de wchar.h :
anthony@prog:/mnt/XP/Dev-Cpp/include$ grep -nri _WCHAR_H_ *
wchar.h:14:#ifndef _WCHAR_H_
wchar.h:15:#define _WCHAR_H_
wchar.h:344:#endif /* not _WCHAR_H_ */
anthony@prog:/mnt/XP/Dev-Cpp/include$
Il évite les multiples inclusions de cet en-tête.
Quelle version de Dev-c++ ?
Et quelle en-tête contient ce problème avec le typedef entre les ifndef
endif de _WCHAR_H_ ?
Je pencherais pour un petit problème dans cette version avec un conflit de
nom entre deux en-tête.
on voit clairement que en C++, ce typedef ne sera JAMAIS effectué.
Quant au _WCHAR_H_ il a en effet rapport avec l'inclusion de wchar.h : :/mnt/XP/Dev-Cpp/include$ grep -nri _WCHAR_H_ * wchar.h:14:#ifndef _WCHAR_H_ wchar.h:15:#define _WCHAR_H_ wchar.h:344:#endif /* not _WCHAR_H_ */ :/mnt/XP/Dev-Cpp/include$
Il évite les multiples inclusions de cet en-tête.
Quelle version de Dev-c++ ? Et quelle en-tête contient ce problème avec le typedef entre les ifndef endif de _WCHAR_H_ ? Je pencherais pour un petit problème dans cette version avec un conflit de nom entre deux en-tête.
-- Anthony Fleury
pascal
writes:
| Gabriel Dos Reis wrote: | > Loïc Joly writes: | | | > | > voila un p'tit problème... | > | > j'ai un un entête de fichier avec : | > | > #ifndef _WCHAR_H_ | > | > typedef unsigned short wchar_t | > | > #define _WCHAR_H_ | > | > et le compilateur (GCC pour ne pas le citer) me sort le | > | > message d'erreur : | > | > redeclaration of C++ built-in type 'wchar_t' | > | > typedef n'est pas comme son nom l'indique,une définition et no n | une | > | > déclaration? | | > | Je pense que ce code a pour but de contourner une limitation | > | de vieux compilateurs qui ne définieraient pas le type | > | standard wchar_t. En | | > et tu crois qu'un tel compilateur pourrait faure quelque chose | > d'un code C++ écrit ces dix-quinze dernières année ? | | Ça dépend de comment on l'écrit. Si une des exigeances du projet | est de supporter des anciens compilateurs, on peut écrire du | code qui le fait. (S'il faut, on peut même encore écrire du | C:-).) Certains projets essaient de le faire, considère | http://www.mozilla.org/hacking/mozilla-style-guide.html.
oh oui, je connais je machin -- on se demande pourquoi il ne sont pas resté à C K&R.
-- Gaby
Je remarque que le compilateur ne correspond pas totalement au bouquin
de Bjarne Stroustrup. Je m'explique: <code> struct X{ int a; int * a; struct X; };
typedef struct X *x; </code>
compile sans problème alors que le bouquin dit que la structure ne supporte pas l'inclusion de ce type.
kanze@gabi-soft.fr writes:
| Gabriel Dos Reis wrote:
| > Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
|
|
| > | > voila un p'tit problème...
| > | > j'ai un un entête de fichier avec :
| > | > #ifndef _WCHAR_H_
| > | > typedef unsigned short wchar_t
| > | > #define _WCHAR_H_
| > | > et le compilateur (GCC pour ne pas le citer) me sort le
| > | > message d'erreur :
| > | > redeclaration of C++ built-in type 'wchar_t'
| > | > typedef n'est pas comme son nom l'indique,une définition et no n
| une
| > | > déclaration?
|
| > | Je pense que ce code a pour but de contourner une limitation
| > | de vieux compilateurs qui ne définieraient pas le type
| > | standard wchar_t. En
|
| > et tu crois qu'un tel compilateur pourrait faure quelque chose
| > d'un code C++ écrit ces dix-quinze dernières année ?
|
| Ça dépend de comment on l'écrit. Si une des exigeances du projet
| est de supporter des anciens compilateurs, on peut écrire du
| code qui le fait. (S'il faut, on peut même encore écrire du
| C:-).) Certains projets essaient de le faire, considère
| http://www.mozilla.org/hacking/mozilla-style-guide.html.
oh oui, je connais je machin -- on se demande pourquoi il ne sont pas
resté à C K&R.
-- Gaby
Je remarque que le compilateur ne correspond pas totalement au bouquin
de Bjarne Stroustrup.
Je m'explique:
<code>
struct X{
int a;
int * a;
struct X;
};
typedef struct X *x;
</code>
compile sans problème alors que le bouquin dit que la structure ne
supporte pas l'inclusion de ce type.
| Gabriel Dos Reis wrote: | > Loïc Joly writes: | | | > | > voila un p'tit problème... | > | > j'ai un un entête de fichier avec : | > | > #ifndef _WCHAR_H_ | > | > typedef unsigned short wchar_t | > | > #define _WCHAR_H_ | > | > et le compilateur (GCC pour ne pas le citer) me sort le | > | > message d'erreur : | > | > redeclaration of C++ built-in type 'wchar_t' | > | > typedef n'est pas comme son nom l'indique,une définition et no n | une | > | > déclaration? | | > | Je pense que ce code a pour but de contourner une limitation | > | de vieux compilateurs qui ne définieraient pas le type | > | standard wchar_t. En | | > et tu crois qu'un tel compilateur pourrait faure quelque chose | > d'un code C++ écrit ces dix-quinze dernières année ? | | Ça dépend de comment on l'écrit. Si une des exigeances du projet | est de supporter des anciens compilateurs, on peut écrire du | code qui le fait. (S'il faut, on peut même encore écrire du | C:-).) Certains projets essaient de le faire, considère | http://www.mozilla.org/hacking/mozilla-style-guide.html.
oh oui, je connais je machin -- on se demande pourquoi il ne sont pas resté à C K&R.
-- Gaby
Je remarque que le compilateur ne correspond pas totalement au bouquin
de Bjarne Stroustrup. Je m'explique: <code> struct X{ int a; int * a; struct X; };
typedef struct X *x; </code>
compile sans problème alors que le bouquin dit que la structure ne supporte pas l'inclusion de ce type.
pascal
pascal wrote:
cette macro a bien un rapport avec l'inclusion du fichier wchar.h ?
Oui et non, à mon avis il faudrait prendre une version plus à jour d e Dev C++, car la mienne n'a pas l'air d'avoir ce problème :
:/mnt/XP/Dev-Cpp/include$ grep -nri "typedef unsigned short wchar_t" * winnt.h:72:typedef unsigned short wchar_t; :/mnt/XP/Dev-Cpp/include$
on voit clairement que en C++, ce typedef ne sera JAMAIS effectué.
Quant au _WCHAR_H_ il a en effet rapport avec l'inclusion de wchar.h : :/mnt/XP/Dev-Cpp/include$ grep -nri _WCHAR_H_ * wchar.h:14:#ifndef _WCHAR_H_ wchar.h:15:#define _WCHAR_H_ wchar.h:344:#endif /* not _WCHAR_H_ */ :/mnt/XP/Dev-Cpp/include$
Il évite les multiples inclusions de cet en-tête.
Quelle version de Dev-c++ ?
il s'agit de la 4.9.9.0.
j'ai essayé d'installer une version 3.4.2 de gcc-core et gcc-g++,mais c'est pire, j'ai des messages que je ne comprends pas du tout: [Warning] 'nul.gcad' is not a gcov data file Et les gens de Devcpp,ne repondent pas grand chose a ce sujet.
Et quelle en-tête contient ce problème avec le typedef entre les ifn def endif de _WCHAR_H_ ?
l'entete est "glut.h"
Je pencherais pour un petit problème dans cette version avec un confli t de nom entre deux en-tête.
pascal wrote:
cette macro a bien un rapport avec l'inclusion du fichier wchar.h ?
Oui et non, à mon avis il faudrait prendre une version plus à jour d e Dev
C++, car la mienne n'a pas l'air d'avoir ce problème :
anthony@prog:/mnt/XP/Dev-Cpp/include$ grep -nri "typedef unsigned short
wchar_t" *
winnt.h:72:typedef unsigned short wchar_t;
anthony@prog:/mnt/XP/Dev-Cpp/include$
on voit clairement que en C++, ce typedef ne sera JAMAIS effectué.
Quant au _WCHAR_H_ il a en effet rapport avec l'inclusion de wchar.h :
anthony@prog:/mnt/XP/Dev-Cpp/include$ grep -nri _WCHAR_H_ *
wchar.h:14:#ifndef _WCHAR_H_
wchar.h:15:#define _WCHAR_H_
wchar.h:344:#endif /* not _WCHAR_H_ */
anthony@prog:/mnt/XP/Dev-Cpp/include$
Il évite les multiples inclusions de cet en-tête.
Quelle version de Dev-c++ ?
il s'agit de la 4.9.9.0.
j'ai essayé d'installer une version 3.4.2 de gcc-core et gcc-g++,mais
c'est pire,
j'ai des messages que je ne comprends pas du tout:
[Warning] 'nul.gcad' is not a gcov data file
Et les gens de Devcpp,ne repondent pas grand chose a ce sujet.
Et quelle en-tête contient ce problème avec le typedef entre les ifn def
endif de _WCHAR_H_ ?
l'entete est "glut.h"
Je pencherais pour un petit problème dans cette version avec un confli t de
nom entre deux en-tête.
on voit clairement que en C++, ce typedef ne sera JAMAIS effectué.
Quant au _WCHAR_H_ il a en effet rapport avec l'inclusion de wchar.h : :/mnt/XP/Dev-Cpp/include$ grep -nri _WCHAR_H_ * wchar.h:14:#ifndef _WCHAR_H_ wchar.h:15:#define _WCHAR_H_ wchar.h:344:#endif /* not _WCHAR_H_ */ :/mnt/XP/Dev-Cpp/include$
Il évite les multiples inclusions de cet en-tête.
Quelle version de Dev-c++ ?
il s'agit de la 4.9.9.0.
j'ai essayé d'installer une version 3.4.2 de gcc-core et gcc-g++,mais c'est pire, j'ai des messages que je ne comprends pas du tout: [Warning] 'nul.gcad' is not a gcov data file Et les gens de Devcpp,ne repondent pas grand chose a ce sujet.
Et quelle en-tête contient ce problème avec le typedef entre les ifn def endif de _WCHAR_H_ ?
l'entete est "glut.h"
Je pencherais pour un petit problème dans cette version avec un confli t de nom entre deux en-tête.
Anthony Fleury
pascal wrote:
Je remarque que le compilateur ne correspond pas totalement au bouquin de Bjarne Stroustrup. Je m'explique: <code> struct X{ int a; int * a; struct X; };
Euh, je n'ai pas testé, mais ca m'étonnerait fort que *CE* code compile hein. Déjà il y a deux `a' de déclaré. Ensuite, le dernier membre n'a même pas de nom... quel code compile alors ? faudrait mieux copier/coller le code qui compile pour éviter ce type d'erreurs.
-- Anthony Fleury
pascal wrote:
Je remarque que le compilateur ne correspond pas totalement au bouquin
de Bjarne Stroustrup.
Je m'explique:
<code>
struct X{
int a;
int * a;
struct X;
};
Euh, je n'ai pas testé, mais ca m'étonnerait fort que *CE* code compile
hein. Déjà il y a deux `a' de déclaré. Ensuite, le dernier membre n'a même
pas de nom... quel code compile alors ? faudrait mieux copier/coller le
code qui compile pour éviter ce type d'erreurs.
Je remarque que le compilateur ne correspond pas totalement au bouquin de Bjarne Stroustrup. Je m'explique: <code> struct X{ int a; int * a; struct X; };
Euh, je n'ai pas testé, mais ca m'étonnerait fort que *CE* code compile hein. Déjà il y a deux `a' de déclaré. Ensuite, le dernier membre n'a même pas de nom... quel code compile alors ? faudrait mieux copier/coller le code qui compile pour éviter ce type d'erreurs.