Une question qui me tarabuste, Qu'est-ce qui a motivé la norme a
déclarer ce code illégal ? (selon $7.1.3.3) :
class Foo;
typedef int Foo;
A noter que l'exemple illustratif de $7.1.3.3 se sent obliger de
montrer une définition. Dans $7.1.3.3, Je note aussi que le diagnostic
indiqué de «typedef int complex;» (suite à class complex { /*
... */};) est une redéfinition (alors que typedef fait une
déclaration).
En fait, ce serait pas mal qu'un «typedef-name» soit un «class-name»,
même s'il ne nommme pas une classe. Je suppose que cela serait source
de problèmes, mais, si c'est bien le cas, j'avoue ne pas le(s) voir du
premier coup d'oeil.
On Mon, 12 Jun 2006 23:03:55 +0200, (Fabien CHÊNE):
Les idées ne manquent pas pour accélérer la compilation ... C'est juste la volonté et le temps de les mettre en oeuvre :-(
Bah oui, mais AMHA un simple rsync sera beaucoup plus efficace et facile à mettre en oeuvre que tout ce qui ressemble au sujet du présent thread.
fabien.chene
Fabien LE LEZ writes:
On Mon, 12 Jun 2006 22:20:43 +0200, (Fabien CHÊNE):
Dans un environnement de compilation -- que je subis -- où le réseau est lent, et les machines bien gonflées en CPU et RAM, on arrive à des records de part de temps de préprocessing; jusqu'à 80% du temps de compilation passé en préprocessing :-(
C'est peut-être que le système de compilation est mal pensé ?
Tout à fait.
Peut-être faudrait-il récupérer tous les fichiers en local (avec rsync par exemple) avant même de commencer la compilation ?
Les idées ne manquent pas pour accélérer la compilation ... C'est juste la volonté et le temps de les mettre en oeuvre :-( Il faut dire que quand tu es empétré/figé dans le ciment -- et non la boue -- continuus, tout est plus compliqué :-(
-- Fab
Fabien LE LEZ <gramster@gramster.com> writes:
On Mon, 12 Jun 2006 22:20:43 +0200, fabien.chene@gmail.com (Fabien
CHÊNE):
Dans un environnement de
compilation -- que je subis -- où le réseau est lent, et les machines
bien gonflées en CPU et RAM, on arrive à des records de part de temps
de préprocessing; jusqu'à 80% du temps de compilation passé en
préprocessing :-(
C'est peut-être que le système de compilation est mal pensé ?
Tout à fait.
Peut-être faudrait-il récupérer tous les fichiers en local (avec rsync
par exemple) avant même de commencer la compilation ?
Les idées ne manquent pas pour accélérer la compilation ... C'est
juste la volonté et le temps de les mettre en oeuvre :-(
Il faut dire que quand tu es empétré/figé dans le ciment -- et non la
boue -- continuus, tout est plus compliqué :-(
On Mon, 12 Jun 2006 22:20:43 +0200, (Fabien CHÊNE):
Dans un environnement de compilation -- que je subis -- où le réseau est lent, et les machines bien gonflées en CPU et RAM, on arrive à des records de part de temps de préprocessing; jusqu'à 80% du temps de compilation passé en préprocessing :-(
C'est peut-être que le système de compilation est mal pensé ?
Tout à fait.
Peut-être faudrait-il récupérer tous les fichiers en local (avec rsync par exemple) avant même de commencer la compilation ?
Les idées ne manquent pas pour accélérer la compilation ... C'est juste la volonté et le temps de les mettre en oeuvre :-( Il faut dire que quand tu es empétré/figé dans le ciment -- et non la boue -- continuus, tout est plus compliqué :-(
-- Fab
fabien.chene
Fabien LE LEZ writes:
On Mon, 12 Jun 2006 23:03:55 +0200, (Fabien CHÊNE):
Les idées ne manquent pas pour accélérer la compilation ... C'est juste la volonté et le temps de les mettre en oeuvre :-(
Bah oui, mais AMHA un simple rsync sera beaucoup plus efficace et facile à mettre en oeuvre que tout ce qui ressemble au sujet du présent thread.
Oui. Mais je ne cherchais pas, dans ce fil, à résoudre un problème de temps de compilation. C'est néanmoins de là qu'est venu ma question sur le pourquoi de la limitation de typedef.
-- Fab
Fabien LE LEZ <gramster@gramster.com> writes:
On Mon, 12 Jun 2006 23:03:55 +0200, fabien.chene@gmail.com (Fabien
CHÊNE):
Les idées ne manquent pas pour accélérer la compilation ... C'est
juste la volonté et le temps de les mettre en oeuvre :-(
Bah oui, mais AMHA un simple rsync sera beaucoup plus efficace et
facile à mettre en oeuvre que tout ce qui ressemble au sujet du
présent thread.
Oui. Mais je ne cherchais pas, dans ce fil, à résoudre un problème de
temps de compilation. C'est néanmoins de là qu'est venu ma question
sur le pourquoi de la limitation de typedef.
On Mon, 12 Jun 2006 23:03:55 +0200, (Fabien CHÊNE):
Les idées ne manquent pas pour accélérer la compilation ... C'est juste la volonté et le temps de les mettre en oeuvre :-(
Bah oui, mais AMHA un simple rsync sera beaucoup plus efficace et facile à mettre en oeuvre que tout ce qui ressemble au sujet du présent thread.
Oui. Mais je ne cherchais pas, dans ce fil, à résoudre un problème de temps de compilation. C'est néanmoins de là qu'est venu ma question sur le pourquoi de la limitation de typedef.
-- Fab
Marc Boyer
Le 09-06-2006, Fabien CHÊNE a écrit :
class Foo; typedef int Foo;
A noter que l'exemple illustratif de $7.1.3.3 se sent obliger de montrer une définition. Dans $7.1.3.3, Je note aussi que le diagnostic indiqué de «typedef int complex;» (suite à class complex { /* ... */};) est une redéfinition (alors que typedef fait une déclaration).
AMHA typedef est une definition et pas une declaration. D'ailleurs class Foo; class Foo; compile (deux declaration de la classe Foo) mais typedef int Bar: typedef int Bar: ne compile pas (multiple definition).
Marc Boyer -- Si tu peux supporter d'entendre tes paroles Travesties par des gueux pour exciter des sots IF -- Rudyard Kipling (Trad. Paul Éluard)
Le 09-06-2006, Fabien CHÊNE <fabien.chene@gmail.com> a écrit :
class Foo;
typedef int Foo;
A noter que l'exemple illustratif de $7.1.3.3 se sent obliger de
montrer une définition. Dans $7.1.3.3, Je note aussi que le diagnostic
indiqué de «typedef int complex;» (suite à class complex { /*
... */};) est une redéfinition (alors que typedef fait une
déclaration).
AMHA typedef est une definition et pas une declaration.
D'ailleurs
class Foo;
class Foo;
compile (deux declaration de la classe Foo) mais
typedef int Bar:
typedef int Bar:
ne compile pas (multiple definition).
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)
A noter que l'exemple illustratif de $7.1.3.3 se sent obliger de montrer une définition. Dans $7.1.3.3, Je note aussi que le diagnostic indiqué de «typedef int complex;» (suite à class complex { /* ... */};) est une redéfinition (alors que typedef fait une déclaration).
AMHA typedef est une definition et pas une declaration. D'ailleurs class Foo; class Foo; compile (deux declaration de la classe Foo) mais typedef int Bar: typedef int Bar: ne compile pas (multiple definition).
Marc Boyer -- Si tu peux supporter d'entendre tes paroles Travesties par des gueux pour exciter des sots IF -- Rudyard Kipling (Trad. Paul Éluard)
fabien.chene
AMHA typedef est une definition et pas une declaration.
C'est quand même une déclaration.
D'ailleurs class Foo; class Foo; compile (deux declaration de la classe Foo)
Oui.
mais typedef int Bar: typedef int Bar: ne compile pas (multiple definition).
Ceci est pourtant valide. cf §7.1.3.2. Quel compilateur utilises-tu ? GCC/g++ n'a pas de problème avec ceci.
(Réponse prise à partir d'un copier-coller d'un message de Marc Boyer depuis google groups, mon serveur de news ne voyait pas ce message)
-- Fab
AMHA typedef est une definition et pas une declaration.
C'est quand même une déclaration.
D'ailleurs
class Foo;
class Foo;
compile (deux declaration de la classe Foo)
Oui.
mais
typedef int Bar:
typedef int Bar:
ne compile pas (multiple definition).
Ceci est pourtant valide. cf §7.1.3.2. Quel compilateur utilises-tu ?
GCC/g++ n'a pas de problème avec ceci.
(Réponse prise à partir d'un copier-coller d'un message de Marc Boyer
depuis google groups, mon serveur de news ne voyait pas ce message)
AMHA typedef est une definition et pas une declaration.
C'est quand même une déclaration.
D'ailleurs class Foo; class Foo; compile (deux declaration de la classe Foo)
Oui.
mais typedef int Bar: typedef int Bar: ne compile pas (multiple definition).
Ceci est pourtant valide. cf §7.1.3.2. Quel compilateur utilises-tu ? GCC/g++ n'a pas de problème avec ceci.
(Réponse prise à partir d'un copier-coller d'un message de Marc Boyer depuis google groups, mon serveur de news ne voyait pas ce message)
-- Fab
Marc Boyer
Le 15-06-2006, Fabien CHÊNE a écrit :
D'ailleurs class Foo; class Foo; compile (deux declaration de la classe Foo)
Oui.
mais typedef int Bar: typedef int Bar: ne compile pas (multiple definition).
Ceci est pourtant valide. cf §7.1.3.2. Quel compilateur utilises-tu ? GCC/g++ n'a pas de problème avec ceci.
(Réponse prise à partir d'un copier-coller d'un message de Marc Boyer depuis google groups, mon serveur de news ne voyait pas ce message)
Ben oui, j'avais fait un cancel dessus, apres avori ete pris d'un doute. En fait, c'est GCC/gcc qui rale (encore que, ca depend des versions), mais GCC/g++ l'accepte.
Marc Boyer -- Si tu peux supporter d'entendre tes paroles Travesties par des gueux pour exciter des sots IF -- Rudyard Kipling (Trad. Paul Éluard)
Le 15-06-2006, Fabien CHÊNE <fabien.chene@gmail.com> a écrit :
D'ailleurs
class Foo;
class Foo;
compile (deux declaration de la classe Foo)
Oui.
mais
typedef int Bar:
typedef int Bar:
ne compile pas (multiple definition).
Ceci est pourtant valide. cf §7.1.3.2. Quel compilateur utilises-tu ?
GCC/g++ n'a pas de problème avec ceci.
(Réponse prise à partir d'un copier-coller d'un message de Marc Boyer
depuis google groups, mon serveur de news ne voyait pas ce message)
Ben oui, j'avais fait un cancel dessus, apres avori ete pris d'un
doute. En fait, c'est GCC/gcc qui rale (encore que, ca depend
des versions), mais GCC/g++ l'accepte.
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)
D'ailleurs class Foo; class Foo; compile (deux declaration de la classe Foo)
Oui.
mais typedef int Bar: typedef int Bar: ne compile pas (multiple definition).
Ceci est pourtant valide. cf §7.1.3.2. Quel compilateur utilises-tu ? GCC/g++ n'a pas de problème avec ceci.
(Réponse prise à partir d'un copier-coller d'un message de Marc Boyer depuis google groups, mon serveur de news ne voyait pas ce message)
Ben oui, j'avais fait un cancel dessus, apres avori ete pris d'un doute. En fait, c'est GCC/gcc qui rale (encore que, ca depend des versions), mais GCC/g++ l'accepte.
Marc Boyer -- Si tu peux supporter d'entendre tes paroles Travesties par des gueux pour exciter des sots IF -- Rudyard Kipling (Trad. Paul Éluard)