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.