Articles précédents : Articles
- [6] Et une architecture de plus
- [36] Emmett Plant n'est plus chez Xiph
- [46] Conectiva Linux 9 est disponible
- [45] Le film OpenSource...
- [32] Politique et wifi un cocktail salé et amer
- [11] Sortie de GStreamer 0.6.1
- [120] Le gouvernement américain contre l'Open Source ?
- [11] Projet Wikira: Recherche WikiEcrivain de science fiction
- [6] Promotion de l'usage du libre dans l'état de l'Orégon
- [191] Les distributions Linux ne sont pas prêtes pour le bureau.
Liens connexes
- Corrections GCC 3.2.3 (1096 hits)
- La page GCC chez GNU (539 hits)
Dépêche modérée par
Cette nouvelle version ne contient aucune nouvelle fonctionnalité et ne concerne donc que les corrections. Et elles sont nombreuses.
Étant donné qu'elle est trop longue pour être donnée ici, j'ai mis en lien la page des changements.
À vos miroirs !
Corrections GCC 3.2.3 (1096 hits)
La page GCC chez GNU (539 hits)
> Lire les commentaires (17 commentaires, moyenne: 3,3).
[+] Re: GCC 3.2.3 est sorti
Re: GCC 3.2.3 est sorti
Attention fini le typedef a tout va:
typedef foo = bar
doit devenir :
typedef typeof(bar) foo
Et je connais pas mal de source ou ca pose des problemes...
(mais c'est mieux.)
-
[^]Re: GCC 3.2.3 est sorti
Posté par manatane () le 25/04/2003 à 09:48. (lien). Évalué à 5.Alors les sources avec des morceaux de code du genre :
#define VRAI 1
#define FAUX 0
typedef int BOOLEAN;
ne compile plus...
Dans le norme ANSI ou ISO le "Naming Types" extension (typedef foo = bar) est considéré comme obsolescente?-
[^]Re: GCC 3.2.3 est sorti
Posté par tuan kuranes (page perso, ) le 25/04/2003 à 09:54. (lien). Évalué à 11.Copier/Coller :
The C and Objective-C compilers no longer accept the "Naming Types" extension (typedef foo = bar); it was already unavailable in C++.
Code which uses it will need to be changed to use the "typeof" extension instead: typedef typeof(bar) foo.
(We have removed this extension without a period of deprecation because it has caused the compiler to crash since version 3.0 and no one noticed until very recently. Thus we conclude it is not in widespread use.)
Chez moi, ca plantait pas...
Ils ont la conclusion rapide en tout cas !!
-
-
[+] [^]Re: GCC 3.2.3 est sorti
Posté par Julien Duponchelle (page perso, ) le 25/04/2003 à 16:36. (lien). Évalué à -1.c'est peut être mieux, mais cela ne va t'il pas posé problémes en particulier sur des sources qui n sont plus maintenu, je ne connais pas la prog C et je me sent pas le courage de bidouiller la source pour corriger cela...
Compatibilité de l'ABI C++
Quelqu'un se sent capable de m'expliquer ce que c'est une ABI ?
par rapport a une API ?
ou de me filer une page qui l'explique ....
-
[^]Re: Compatibilité de l'ABI C++
Posté par tomt2m () le 25/04/2003 à 10:05. (lien). Évalué à 10.Je suis pas expert, mais je tente une explication.
Une API c'est une interface de programation; ce sont les noms des fonctions, des structures. La conservation de la compatibilté de l'API, ça veut dire en gros que les noms et signatures des fonctions n'ont pas changé, ainsi que les noms des structures, constantes exportées etc. En clair, si la bibliothèque est mise à jour avec conservation de la compatibilité API, normalement au pire, il suffit de recompiler l'appli qui s'en sert.
ABI c'est "Application Binary Interface", et quand on dit qu'une ABI est instable ça veut dire qu'un programme utilisant une bibliothèque dont l'ABI à changé devra nécessairement être recompilé, par exemple parceque certaines structures on changé de taille, ou parceque certaines fonctions ont changé de signature.
Toute personne est bienvennu pour corriger ou enrichir ce que je viens de raconter...
-
[^]Re: Compatibilité de l'ABI C++
Posté par Raphael Junqueira (page perso, ) le 25/04/2003 à 10:08. (lien). Évalué à 9.API: interface de programation, si tu reste API compatible cela veut dire que tu reste compatible source entre deux implementations differentes. Si tu change d'implementation il suffit alors de recompiler pour que ca remarche.
ABI: compatibilite binaire. Correspond a une compatibilite d'API avec en plus la garantie qu'a chaque nouvelle implementation ton binaire fonctionnera toujours. Cela n'etait pas trop le cas avec g++ qui produisait a chaque version (avant la 3.0) des binaires c++ qui n'etaient pas compatible avec les binaires compiles avec la version precedente. D'ou quand tu avait kde, il fallait tout recompiler kde+qt+fam+... pour que ca remarche.
Et maintenant vu que les compilos c++ partagent la meme ABI, tu peut avoir en parrallele des binaires compiles par icc avec des binaires g++ fonctionnant ensemble.
-
[^]Re: Compatibilité de l'ABI C++
Posté par LupusMic (page perso, ) le 25/04/2003 à 10:42. (lien). Évalué à 12.Dans le cas présent, il s'agit d'un problème au niveau du polymorphisme.
Le polymorphisme s'appuye sur des fonctions virtuelles, qui n'ont pas d'adresse définie, ou redéfinissable. En conséquence, il faut passer par une table de pointeurs de fonctions (la vtable). Le C++ défini un ordre précis dans lequel doit être lue cette table (comme les éléments d'une pile sont ajoutés du heut vers le bas). Or, g++ rangeait les adresses dans le sens opposé à celui de la norme, et ce fut changé dans la version 3.0
C'est la raison principale qui explique l'incompatibilité bianaire. J'ai fait court, pas un cours ;) Donc ceux qui ne programment pas .. ditent-vous juste que g++ ancienne version faisait fonctionner les applications dans un sens, et que la nouvelle version les fait fonctionner dans l'autre.
Je peux pas faire plus clair :o)-
[^]Re: Compatibilité de l'ABI C++
-
-
[^]Re: Compatibilité de l'ABI C++
Posté par zoltar () le 26/04/2003 à 12:54. (lien). Évalué à 3.ABI désigne la convention qui permet la compatibilité binaire entre objets compilés avec deux outils différents.
En C, l'ABI s'occupe essentiellement de la convention d'appel de fonction.
En C++, on ajoute
- le polymorphisme : où se trouve le pointeur de table de méthodes virtuelles de chaque objet, en tenant compte de l'héritage multiple.
- le "name mangling" : en C int toto(int) et int toto( char ) c'est interdit, pas en C++, ça veut dire que les objets compilés doivent stocker des informations de type des arguments en plus des noms de fonction. En plus en C++ il faut décider comment nommer les instanciation de templates.
- la "run-time type identification" qui permet de demander à un objet s'il est d'un type particulier.
- les exceptions
Je ne pense pas avoir été exhaustif sur les fonctionnalité du C++ qui font apparaître le besoin d'une ABI stable. Ce qui est sûr, c'est que gcc en a désormais publié une.
[+] Re: GCC 3.2.3 est sorti
Bonjour,
Ceci est un commentaire dont le but est de pollu^H^H^H participer au site et de récupérer mon droit de vote
-
[^]Re: GCC 3.2.3 est sorti
Posté par Julien Duponchelle (page perso, ) le 25/04/2003 à 16:32. (lien). Évalué à 1.je crois que tu a mal compris la phylosophie du sytéme, il est normal que seul ceux qui font des commentaires est le droit de "crititiquer" ou "recompenser" les autre
-
[+] [^]Re: GCC 3.2.3 est sorti
Posté par Pierre Tramo (page perso, ) le 25/04/2003 à 17:11. (lien). Évalué à -1.philosophie (philo == amour)
des commentaires aient le droit (verbe avoir)
-42
-
[^]Re: GCC 3.2.3 est sorti
Posté par azhyd () le 25/04/2003 à 17:53. (lien). Évalué à 1.il me semble aussi normal que des personnes ne postant pas de commentaire puissent participer au tri/jugement de la pertinence des autres commentaires...
-
[^]Re: GCC 3.2.3 est sorti
Posté par psc82 () le 25/04/2003 à 23:14. (lien). Évalué à 0.je suis assez d'accord, actuellement je peux plus noter les msgs...
j'avous que je post pas forcement souvent mais est-ce une raison de me punir ???
a quand un permis a point pour l'idle de postage ?-
[^]Re: GCC 3.2.3 est sorti
Posté par Stone Tramo () le 26/04/2003 à 05:34. (lien). Évalué à 1.Le pire, c'est qu'un post sur la tribune ne compense pas.
-
-
-




Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.