next up previous contents
Next: Déclaration et définition Up: Édition de liens Previous: Édition de liens

Codage des noms de fonctions

N'ayant aucune information sur les types, les éditeurs de liens ne peuvent pas faire de vérification de type. Le C++ fera quand même un vérification de type en codant dans le nom des fonctions le type des arguments.

Par exemple, pour une fonction de signature f(int, double), le C++ appellera cette fonction f__Fid : ce qui se trouve avant les __ c'est-à-dire: f est le nom de la F (fonction) ayant un argument i pour int et un autre argument d pour double. Si, dans un autre module figure un déclaration de f différente, par exemple f(char), le compilateur traduira ce nom en f__Fc, les deux noms ne se correspondant pas, l'éditeur de liens ne les associera pas. Cela entraîne aussi que l'accès direct par l'éditeur de liens à des fonctions non C++ (et donc non-codées) suppose une syntaxe particulière (pour éviter ce codage).

En général, seules les fonctions (et uniquement le type de leurs arguments) seront concernées par ce codage. Pour avoir une implémentation qui vérifierait ``parfaitement'' les types, il faudrait que le compilateur ait accès à des informations des autres compilations.

Les débogueurs bien sûr doivent tenir compte de ces codages.




Mon Oct 20 14:02:48 MET 1997