35Fermer37
GodzilLe 02/06/2014 à 17:46
Folco (./33) :
Même A68k fait du mangling, pas besoin de C++ pour ça.
Godzil (./20) :
Le C n'a pas de mangling a la C++ et la raison est assez simple, vous avez déjà regardé le mangling d'une fonction C++ ? C'est juste imbuvable, et c'est inutilisable en direct en assembleur.

Je vois pas le rapport encotre le côté imbuvable et l'utilisabilité en assembleur ???

si faire des

jsr __1cGstrcpy6Fpcpkc_0_

t'amuse, je n'ai pas de soucis. Moi ce n'est pas le cas, j'ai autre chose a faire que passer ma journée à passer les nom de fonction manglé dans un c++filt ou équivalent pour savoir quelle est la fonction et son prototype.
Godzil (./20) :
Le C n'est PAS un langage de haut niveau, moins de fonctionnalité a la con sont présente dans le langage, mieux il se porte, c'est un langage fait pour faire du système, pas pour faire des "truc fantaisies" et le polymorphisme est quelque chose qui enlève une partie du contrôle qu'on peu avoir sur le langage.

Quel rapport entre la surcharge et le polymorphisme ??

Simplement que la surcharges fait partit de ce qu'on appele le polymorphisme? ( https://fr.wikipedia.org/wiki/Polymorphisme_(informatique) )
Mais bien sur le polymorphisme n'est pas que la surcharge, les templates et autres héritages en font aussi partit dans le cadre du C++.

Il me semble qu'il serait parfaitement possible de faire de la surcharge de fonction (et donc du mangling) sans rien casser.

Justement tu te trompe, ajouter la surcharge au C risque de casser plein de choses

Il suffirait de déclarer quelle fonction, dans un ensemble de fonctions surchargée, ne devrait pas être manglée, et ça suffirait pour préserver l'existant.
Ca serait le cas par défaut pour toutes les fonctions de la libc (normal...), ainsi que pour les fonctions déjà existantes et exportées qu'on voudrait surcharger.
Pour tout code nouveau, ça serait parfaitement inutile.

Comment ton compilo détermine quelle est le prototype qu'il ne faut pas mangler?
Un compilateur C est une bête déjà plutôt complexe, pourquoi ajouter des trucs encore plus complexes et techniquement problématiques ? Soit du change tout, soit rien, mais pas un mix des deux, bonjour le bordel :/
Godzil (./20) :
Et puis apres on ajoute quoi ? la surcharge des opérateurs ? Comme ça on peux faire du cin/cout en C ?

Tu vois Godzil, si t'avais un ton un peu moins péremptoire, que t'arrêtais de te contredire (./13, ./20, ./29), en bref si t'arrêtais de prendre les autres pour des cons avec ce ton mérpisant, franchement ça serait sympa. Ca a l'air à la mode dans les topics d'info du moment, mais c'est chiant cette manière de parler.

Je ne vois pas ou je me contredit, premier post j'ai parle d'ABI a la place de signature/mangling, chose que je reconnais au second post, et le 3ème je dit que je n'avais pas complètement tords vu que le mangling semble être pris en compte dans la définition d'une ABI.

Désole mais je ne vois pas ou je me contredis.
Quand à être méprisant, tu m'en verra désole car je n'ai jamais cherche chercher à être méprisant, alors excuse moi si tu as eu cette impression, elle est fausse.

Quand au reste de la citation, c'est simplement que si tu commence a ajouter des choses du C++ au C, jusqu’où tu t’arrête? si tu ajoute la surcharge, pourquoi ne pas ajouter d'autres choses?

Apres, tu peux aussi utiliser un compilateur C++ tout en faisant du "C" sans la partie objet (donc du purement fonctionnel) mais en utilisant les surcharges & autres "bonus" du C++