quand j'écris ces lignes qu'est ce qui gene le compilateur,
j'ai indiqué la ligne en erreur,
moi je trouve ca plus facile qu'avec des pointeurs!!
(ce programme calcul la suite de fibonacci jusqu'à 10)
merci
À part void main à la place de int main, je ne vois pas de problèmes pouvant indisposer un compilateur avec ce programme
http://www.gimpel.com/html/bugs/bug815.htm
Non?
-- Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5 ----- "Time never started at all. Chaos never died. The Empire was never founded. We are not now & never have been slaves to the past or hostages to the future." -Hakim Bey, /T.A.Z./
Bonsoir,
On Sat, 20 Nov 2004, Jean-Marc Bourguet wrote:
À part void main à la place de int main, je ne vois pas de
problèmes pouvant indisposer un compilateur avec ce
programme
http://www.gimpel.com/html/bugs/bug815.htm
Non?
--
Erwann ABALEA <erwann@abalea.com> - RSA PGP Key ID: 0x2D0EABD5
-----
"Time never started at all. Chaos never died. The Empire was
never founded. We are not now & never have been slaves to the
past or hostages to the future." -Hakim Bey, /T.A.Z./
À part void main à la place de int main, je ne vois pas de problèmes pouvant indisposer un compilateur avec ce programme
http://www.gimpel.com/html/bugs/bug815.htm
Non?
-- Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5 ----- "Time never started at all. Chaos never died. The Empire was never founded. We are not now & never have been slaves to the past or hostages to the future." -Hakim Bey, /T.A.Z./
drkm
"jmarc" writes:
pas la peine j'ai trouvé
Peux-tu, stp, ne citer que les passages pertinent du message auquel tu réponds ? Ainsi que répondre *après* le message cité. Merci.
--drkm
"jmarc" <jean.marc.cholet@wanadoo.fr> writes:
pas la peine j'ai trouvé
Peux-tu, stp, ne citer que les passages pertinent du message auquel
tu réponds ? Ainsi que répondre *après* le message cité. Merci.
À part void main à la place de int main, je ne vois pas de problèmes pouvant indisposer un compilateur avec ce programme
http://www.gimpel.com/html/bugs/bug815.htm
Non?
Où ça ?
--drkm
Erwann ABALEA
On Sun, 21 Nov 2004, drkm wrote:
Erwann ABALEA writes:
Bonsoir,
On Sat, 20 Nov 2004, Jean-Marc Bourguet wrote:
À part void main à la place de int main, je ne vois pas de problèmes pouvant indisposer un compilateur avec ce programme
http://www.gimpel.com/html/bugs/bug815.htm
Non?
Où ça ?
Visiblement, le programme posté par jmarc ne correspond pas à ce qui a été compilé (il n'y a aucune fonction void inittab(int &t) dans son source). Je me dis qu'il a compilé le source posté, qu'il a tenté de l'exécuter, et qu'il a eu une erreur à l'exécution (un SIGSEGV par exemple).
De plus, Jean-Marc Bourguet ne voit pas de problème pouvant indisposer un compilateur. Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
-- Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5 ----- PS> Salut ! J'ai un sujet de philo à vous soumettre : "Suffit-il PS> d'observer pour connaître" Idées + plan Merçi Oui, ya qu'a t'observer pour connaître le fait que tu es une feignasse. -+- FF in: Guide du Neuneu d'Usenet - Neuneu fait de la philo -+-
On Sun, 21 Nov 2004, drkm wrote:
Erwann ABALEA <erwann@abalea.com> writes:
Bonsoir,
On Sat, 20 Nov 2004, Jean-Marc Bourguet wrote:
À part void main à la place de int main, je ne vois pas de
problèmes pouvant indisposer un compilateur avec ce
programme
http://www.gimpel.com/html/bugs/bug815.htm
Non?
Où ça ?
Visiblement, le programme posté par jmarc ne correspond pas à ce qui a été
compilé (il n'y a aucune fonction void inittab(int &t) dans son source).
Je me dis qu'il a compilé le source posté, qu'il a tenté de l'exécuter, et
qu'il a eu une erreur à l'exécution (un SIGSEGV par exemple).
De plus, Jean-Marc Bourguet ne voit pas de problème pouvant indisposer un
compilateur. Je fournis simplement un lien vers une page où une
construction similaire (remplace "new (char *)[10]" par "new int[10]") est
décrite comme une erreur potentielle, avec explications.
--
Erwann ABALEA <erwann@abalea.com> - RSA PGP Key ID: 0x2D0EABD5
-----
PS> Salut ! J'ai un sujet de philo à vous soumettre : "Suffit-il
PS> d'observer pour connaître" Idées + plan Merçi
Oui, ya qu'a t'observer pour connaître le fait que tu es une feignasse.
-+- FF in: Guide du Neuneu d'Usenet - Neuneu fait de la philo -+-
À part void main à la place de int main, je ne vois pas de problèmes pouvant indisposer un compilateur avec ce programme
http://www.gimpel.com/html/bugs/bug815.htm
Non?
Où ça ?
Visiblement, le programme posté par jmarc ne correspond pas à ce qui a été compilé (il n'y a aucune fonction void inittab(int &t) dans son source). Je me dis qu'il a compilé le source posté, qu'il a tenté de l'exécuter, et qu'il a eu une erreur à l'exécution (un SIGSEGV par exemple).
De plus, Jean-Marc Bourguet ne voit pas de problème pouvant indisposer un compilateur. Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
-- Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5 ----- PS> Salut ! J'ai un sujet de philo à vous soumettre : "Suffit-il PS> d'observer pour connaître" Idées + plan Merçi Oui, ya qu'a t'observer pour connaître le fait que tu es une feignasse. -+- FF in: Guide du Neuneu d'Usenet - Neuneu fait de la philo -+-
Fabien LE LEZ
On Sun, 21 Nov 2004 01:13:08 +0100, Erwann ABALEA :
http://www.gimpel.com/html/bugs/bug815.htm
"Our attempt to wish everyone a Merry Christmas, though syntactically correct, has a serious flaw. Can you find it?"
Euh... le "serious flaw" dont ils parlent, c'est que le programme est écrit n'importe comment ? Mon dieu mon dieu... S'il existe un programmeur C++ qui ose écrire ça, pas étonnant qu'il ait besoin de plein de logiciels de débogage...
-- ;-)
On Sun, 21 Nov 2004 01:13:08 +0100, Erwann ABALEA <erwann@abalea.com>:
http://www.gimpel.com/html/bugs/bug815.htm
"Our attempt to wish everyone a Merry Christmas, though syntactically
correct, has a serious flaw. Can you find it?"
Euh... le "serious flaw" dont ils parlent, c'est que le programme est
écrit n'importe comment ?
Mon dieu mon dieu... S'il existe un programmeur C++ qui ose écrire ça,
pas étonnant qu'il ait besoin de plein de logiciels de débogage...
On Sun, 21 Nov 2004 01:13:08 +0100, Erwann ABALEA :
http://www.gimpel.com/html/bugs/bug815.htm
"Our attempt to wish everyone a Merry Christmas, though syntactically correct, has a serious flaw. Can you find it?"
Euh... le "serious flaw" dont ils parlent, c'est que le programme est écrit n'importe comment ? Mon dieu mon dieu... S'il existe un programmeur C++ qui ose écrire ça, pas étonnant qu'il ait besoin de plein de logiciels de débogage...
-- ;-)
Fabien LE LEZ
On Sun, 21 Nov 2004 11:14:07 +0100, Erwann ABALEA :
Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
Sauf que dans la page en question, l'erreur vient justement du fait qu'on alloue un tableau de "char *", type dont le nom est composé de deux "morceaux".
-- ;-)
On Sun, 21 Nov 2004 11:14:07 +0100, Erwann ABALEA <erwann@abalea.com>:
Je fournis simplement un lien vers une page où une
construction similaire (remplace "new (char *)[10]" par "new int[10]") est
décrite comme une erreur potentielle, avec explications.
Sauf que dans la page en question, l'erreur vient justement du fait
qu'on alloue un tableau de "char *", type dont le nom est composé de
deux "morceaux".
On Sun, 21 Nov 2004 11:14:07 +0100, Erwann ABALEA :
Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
Sauf que dans la page en question, l'erreur vient justement du fait qu'on alloue un tableau de "char *", type dont le nom est composé de deux "morceaux".
-- ;-)
Jean-Marc Bourguet
Erwann ABALEA writes:
On Sun, 21 Nov 2004, drkm wrote:
Erwann ABALEA writes:
Bonsoir,
On Sat, 20 Nov 2004, Jean-Marc Bourguet wrote:
À part void main à la place de int main, je ne vois pas de problèmes pouvant indisposer un compilateur avec ce programme
http://www.gimpel.com/html/bugs/bug815.htm
Non?
Où ça ?
Visiblement, le programme posté par jmarc ne correspond pas à ce qui a été compilé (il n'y a aucune fonction void inittab(int &t) dans son source). Je me dis qu'il a compilé le source posté, qu'il a tenté de l'exécuter, et qu'il a eu une erreur à l'exécution (un SIGSEGV par exemple).
Vu qu'il donnait un message d'erreur, qu'il disait qu'il trouvait ça plus propre, je juge plus probable qu'il a posté une version compilant et fonctionnant plutot que l'essai avec les références avec lequel il avait des problèmes mais qu'il trouvait plus propre.
Le problème du bug815 n'est pas présent dans le code posté non plus.
De plus, Jean-Marc Bourguet ne voit pas de problème pouvant indisposer un compilateur. Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
v = new int[s];
contient la première apparition de new dans la deuxième édition the TC++PL (page 31 dans un chapitre intitullé "A tour of C++"). Un compilateur qui tiquerait sur ça serait vraissemblablement ignoré systématiquement sur le warning, trop de faux positifs. Il n'est donc pas étonnant que dkrm qui connait le C++ ne voit pas le problème que tu imagines.
Ce qui suit new doit être un type, est-ce que
void f((char*)[10]);
te convient comme déclaration de fonction en C? J'espère que non: (char*)[10] n'est un type ni C ni en C++. Donc
new (char*)[10]
s'il est valable ne peut pas être interprété comme
new type
il l'est donc comme
expr[10]
et c'est le problème du bug815.
Note que l'exemple de Gimple
PtrPtrChar p = (PtrPtrChar) new (char *)[10];
est particulièrement tordu, parce que
1/ il y a un cast, caster le résultat de new est stupide en C++
2/ il faut le cast, il n'est pas à cause du problème du const oublié
new (char const*)[10]
a aussi besoin du cast pour faire taire le compilateur
new (char const*) a pour type char const** new (char const*)[10] a pour type char const*
3/ l'expression plus naturelle
PtrPtrChar p = new PtrChar[10];
(si on écrit des typedef, autant les utiliser, pour rappel les paramètres de la fonction sont déclarés avec le typedef) fait ce qu'il faut
4/ l'expression aussi plus naturelle
PtrPtrChar p = new char const*[10];
fait aussi ce qu'il faut.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Erwann ABALEA <erwann@abalea.com> writes:
On Sun, 21 Nov 2004, drkm wrote:
Erwann ABALEA <erwann@abalea.com> writes:
Bonsoir,
On Sat, 20 Nov 2004, Jean-Marc Bourguet wrote:
À part void main à la place de int main, je ne vois pas de
problèmes pouvant indisposer un compilateur avec ce
programme
http://www.gimpel.com/html/bugs/bug815.htm
Non?
Où ça ?
Visiblement, le programme posté par jmarc ne correspond
pas à ce qui a été compilé (il n'y a aucune fonction void
inittab(int &t) dans son source). Je me dis qu'il a
compilé le source posté, qu'il a tenté de l'exécuter, et
qu'il a eu une erreur à l'exécution (un SIGSEGV par
exemple).
Vu qu'il donnait un message d'erreur, qu'il disait qu'il
trouvait ça plus propre, je juge plus probable qu'il a posté
une version compilant et fonctionnant plutot que l'essai
avec les références avec lequel il avait des problèmes mais
qu'il trouvait plus propre.
Le problème du bug815 n'est pas présent dans le code posté
non plus.
De plus, Jean-Marc Bourguet ne voit pas de problème
pouvant indisposer un compilateur. Je fournis simplement
un lien vers une page où une construction similaire
(remplace "new (char *)[10]" par "new int[10]") est
décrite comme une erreur potentielle, avec explications.
v = new int[s];
contient la première apparition de new dans la deuxième
édition the TC++PL (page 31 dans un chapitre intitullé "A
tour of C++"). Un compilateur qui tiquerait sur ça serait
vraissemblablement ignoré systématiquement sur le warning,
trop de faux positifs. Il n'est donc pas étonnant que dkrm
qui connait le C++ ne voit pas le problème que tu imagines.
Ce qui suit new doit être un type, est-ce que
void f((char*)[10]);
te convient comme déclaration de fonction en C? J'espère
que non: (char*)[10] n'est un type ni C ni en C++. Donc
new (char*)[10]
s'il est valable ne peut pas être interprété comme
new type
il l'est donc comme
expr[10]
et c'est le problème du bug815.
Note que l'exemple de Gimple
PtrPtrChar p = (PtrPtrChar) new (char *)[10];
est particulièrement tordu, parce que
1/ il y a un cast, caster le résultat de new est stupide
en C++
2/ il faut le cast, il n'est pas à cause du problème du
const oublié
new (char const*)[10]
a aussi besoin du cast pour faire taire le compilateur
new (char const*) a pour type char const**
new (char const*)[10] a pour type char const*
3/ l'expression plus naturelle
PtrPtrChar p = new PtrChar[10];
(si on écrit des typedef, autant les utiliser, pour
rappel les paramètres de la fonction sont déclarés
avec le typedef) fait ce qu'il faut
4/ l'expression aussi plus naturelle
PtrPtrChar p = new char const*[10];
fait aussi ce qu'il faut.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
À part void main à la place de int main, je ne vois pas de problèmes pouvant indisposer un compilateur avec ce programme
http://www.gimpel.com/html/bugs/bug815.htm
Non?
Où ça ?
Visiblement, le programme posté par jmarc ne correspond pas à ce qui a été compilé (il n'y a aucune fonction void inittab(int &t) dans son source). Je me dis qu'il a compilé le source posté, qu'il a tenté de l'exécuter, et qu'il a eu une erreur à l'exécution (un SIGSEGV par exemple).
Vu qu'il donnait un message d'erreur, qu'il disait qu'il trouvait ça plus propre, je juge plus probable qu'il a posté une version compilant et fonctionnant plutot que l'essai avec les références avec lequel il avait des problèmes mais qu'il trouvait plus propre.
Le problème du bug815 n'est pas présent dans le code posté non plus.
De plus, Jean-Marc Bourguet ne voit pas de problème pouvant indisposer un compilateur. Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
v = new int[s];
contient la première apparition de new dans la deuxième édition the TC++PL (page 31 dans un chapitre intitullé "A tour of C++"). Un compilateur qui tiquerait sur ça serait vraissemblablement ignoré systématiquement sur le warning, trop de faux positifs. Il n'est donc pas étonnant que dkrm qui connait le C++ ne voit pas le problème que tu imagines.
Ce qui suit new doit être un type, est-ce que
void f((char*)[10]);
te convient comme déclaration de fonction en C? J'espère que non: (char*)[10] n'est un type ni C ni en C++. Donc
new (char*)[10]
s'il est valable ne peut pas être interprété comme
new type
il l'est donc comme
expr[10]
et c'est le problème du bug815.
Note que l'exemple de Gimple
PtrPtrChar p = (PtrPtrChar) new (char *)[10];
est particulièrement tordu, parce que
1/ il y a un cast, caster le résultat de new est stupide en C++
2/ il faut le cast, il n'est pas à cause du problème du const oublié
new (char const*)[10]
a aussi besoin du cast pour faire taire le compilateur
new (char const*) a pour type char const** new (char const*)[10] a pour type char const*
3/ l'expression plus naturelle
PtrPtrChar p = new PtrChar[10];
(si on écrit des typedef, autant les utiliser, pour rappel les paramètres de la fonction sont déclarés avec le typedef) fait ce qu'il faut
4/ l'expression aussi plus naturelle
PtrPtrChar p = new char const*[10];
fait aussi ce qu'il faut.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
darkman_spam
Erwann ABALEA wrote in message news:...
On Sun, 21 Nov 2004, drkm wrote:
Erwann ABALEA writes:
http://www.gimpel.com/html/bugs/bug815.htm
Non?
Où ça ?
Visiblement, le programme posté par jmarc ne correspond pas à ce qui a été compilé (il n'y a aucune fonction void inittab(int &t) dans son source). Je me dis qu'il a compilé le source posté, qu'il a tenté de l'exécuter, et qu'il a eu une erreur à l'exécution (un SIGSEGV par exemple).
De plus, Jean-Marc Bourguet ne voit pas de problème pouvant indisposer un compilateur. Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
Mais si tu remplaces "new ( char * )[ 10 ]" par "new int[ 10 ]", alors quel rapport avec le lien que tu donnes ?
--drkm
Erwann ABALEA <erwann@abalea.com> wrote in message news:<Pine.LNX.4.58.0411211051340.20764@shining.seclogd.org>...
On Sun, 21 Nov 2004, drkm wrote:
Erwann ABALEA <erwann@abalea.com> writes:
http://www.gimpel.com/html/bugs/bug815.htm
Non?
Où ça ?
Visiblement, le programme posté par jmarc ne correspond pas à ce qui a été
compilé (il n'y a aucune fonction void inittab(int &t) dans son source).
Je me dis qu'il a compilé le source posté, qu'il a tenté de l'exécuter, et
qu'il a eu une erreur à l'exécution (un SIGSEGV par exemple).
De plus, Jean-Marc Bourguet ne voit pas de problème pouvant indisposer un
compilateur. Je fournis simplement un lien vers une page où une
construction similaire (remplace "new (char *)[10]" par "new int[10]") est
décrite comme une erreur potentielle, avec explications.
Mais si tu remplaces "new ( char * )[ 10 ]" par "new int[ 10 ]",
alors quel rapport avec le lien que tu donnes ?
Visiblement, le programme posté par jmarc ne correspond pas à ce qui a été compilé (il n'y a aucune fonction void inittab(int &t) dans son source). Je me dis qu'il a compilé le source posté, qu'il a tenté de l'exécuter, et qu'il a eu une erreur à l'exécution (un SIGSEGV par exemple).
De plus, Jean-Marc Bourguet ne voit pas de problème pouvant indisposer un compilateur. Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
Mais si tu remplaces "new ( char * )[ 10 ]" par "new int[ 10 ]", alors quel rapport avec le lien que tu donnes ?
--drkm
Erwann ABALEA
On Sun, 21 Nov 2004, Fabien LE LEZ wrote:
On Sun, 21 Nov 2004 11:14:07 +0100, Erwann ABALEA :
Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
Sauf que dans la page en question, l'erreur vient justement du fait qu'on alloue un tableau de "char *", type dont le nom est composé de deux "morceaux".
OK. Chez nous (i.e. dans ma boîte), j'aurais dit: "ma gueule". Merci à toi et Jean-Marc pour m'avoir montré qu'il ne faut pas tenter ce genre d'exercice quand on est fiévreux. Trop facile de se planter.
-- Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5 ----- Ceci était mon dernier message, quels que soient les messages suivants, je n'y répondrai pas car ce ne sont que des opinions. -+-LH in: GNU-Toutes les opinions sont respectables sauf les votres. -+-
On Sun, 21 Nov 2004, Fabien LE LEZ wrote:
On Sun, 21 Nov 2004 11:14:07 +0100, Erwann ABALEA <erwann@abalea.com>:
Je fournis simplement un lien vers une page où une
construction similaire (remplace "new (char *)[10]" par "new int[10]") est
décrite comme une erreur potentielle, avec explications.
Sauf que dans la page en question, l'erreur vient justement du fait
qu'on alloue un tableau de "char *", type dont le nom est composé de
deux "morceaux".
OK. Chez nous (i.e. dans ma boîte), j'aurais dit: "ma gueule".
Merci à toi et Jean-Marc pour m'avoir montré qu'il ne faut pas tenter ce
genre d'exercice quand on est fiévreux. Trop facile de se planter.
--
Erwann ABALEA <erwann@abalea.com> - RSA PGP Key ID: 0x2D0EABD5
-----
Ceci était mon dernier message, quels que soient les messages suivants,
je n'y répondrai pas car ce ne sont que des opinions.
-+-LH in: GNU-Toutes les opinions sont respectables sauf les votres. -+-
On Sun, 21 Nov 2004 11:14:07 +0100, Erwann ABALEA :
Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
Sauf que dans la page en question, l'erreur vient justement du fait qu'on alloue un tableau de "char *", type dont le nom est composé de deux "morceaux".
OK. Chez nous (i.e. dans ma boîte), j'aurais dit: "ma gueule". Merci à toi et Jean-Marc pour m'avoir montré qu'il ne faut pas tenter ce genre d'exercice quand on est fiévreux. Trop facile de se planter.
-- Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5 ----- Ceci était mon dernier message, quels que soient les messages suivants, je n'y répondrai pas car ce ne sont que des opinions. -+-LH in: GNU-Toutes les opinions sont respectables sauf les votres. -+-
kanze
Fabien LE LEZ wrote in message news:...
On Sun, 21 Nov 2004 11:14:07 +0100, Erwann ABALEA :
Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
Sauf que dans la page en question, l'erreur vient justement du fait qu'on alloue un tableau de "char *", type dont le nom est composé de deux "morceaux".
Non, le problème, c'est qu'on a utilisé des parenthèses sur une partie du type qui comprend la « declaration specifier ». Selon la grammaire, les parenthèses ne peut entourer que soit le type complet, soit les parties du declarateur. Vue qu'ici « char » ne fait pas partie du declarateur, la seule interprêtation possible, c'est que les parenthèses entourent le type complet, et que ce qui suit ne fait pas partie du type. Tu aurais le même problème avec « new (int)[ 10 ] ».
-- James Kanze GABI Software http://www.gabi-soft.fr 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
Fabien LE LEZ <gramster@gramster.com> wrote in message
news:<lor0q0hf6alel2s3097qs9d7uj7jutf98f@4ax.com>...
On Sun, 21 Nov 2004 11:14:07 +0100, Erwann ABALEA <erwann@abalea.com>:
Je fournis simplement un lien vers une page où une
construction similaire (remplace "new (char *)[10]" par "new int[10]") est
décrite comme une erreur potentielle, avec explications.
Sauf que dans la page en question, l'erreur vient justement du fait
qu'on alloue un tableau de "char *", type dont le nom est composé de
deux "morceaux".
Non, le problème, c'est qu'on a utilisé des parenthèses sur une partie
du type qui comprend la « declaration specifier ». Selon la grammaire,
les parenthèses ne peut entourer que soit le type complet, soit les
parties du declarateur. Vue qu'ici « char » ne fait pas partie du
declarateur, la seule interprêtation possible, c'est que les parenthèses
entourent le type complet, et que ce qui suit ne fait pas partie du
type. Tu aurais le même problème avec « new (int)[ 10 ] ».
--
James Kanze GABI Software http://www.gabi-soft.fr
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
On Sun, 21 Nov 2004 11:14:07 +0100, Erwann ABALEA :
Je fournis simplement un lien vers une page où une construction similaire (remplace "new (char *)[10]" par "new int[10]") est décrite comme une erreur potentielle, avec explications.
Sauf que dans la page en question, l'erreur vient justement du fait qu'on alloue un tableau de "char *", type dont le nom est composé de deux "morceaux".
Non, le problème, c'est qu'on a utilisé des parenthèses sur une partie du type qui comprend la « declaration specifier ». Selon la grammaire, les parenthèses ne peut entourer que soit le type complet, soit les parties du declarateur. Vue qu'ici « char » ne fait pas partie du declarateur, la seule interprêtation possible, c'est que les parenthèses entourent le type complet, et que ce qui suit ne fait pas partie du type. Tu aurais le même problème avec « new (int)[ 10 ] ».
-- James Kanze GABI Software http://www.gabi-soft.fr 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