|
Sujet : [C++] Les fameuses classes |
| BENB |
Godbout a écrit a écrit :
Encore une p'tite question ;)
extern "C" const char* _export WINAPI GetErrorMsg()
{
return LastError?LastError:"Ok";
}
extern "C" c'est pour exporter la fonction lorsqu'elle est ecrite en C c'est bien ca ?
|
En C++ plusieurs fonctions peuvent porter le meme nom a condition que la liste de leur arguments soit differente.
Pour les differencier le compilo ajoute des decorations...
Ces decorations ne font l'objet d'aucun standard, d'un compilo a l'autre il n'y a aucune raison pour que ce soi les memes...
ces decoration ne sont pas une particularite du C++, le C ajoute un _ devant les nom de fonctions
extern "C" permet de generer en C++ une fonction avec des decorations C plutot que C++
l'interet est de pouvoir editer des liens avec des binaires ecrits en C (qui ne peuvent generer des decoration C++) ou d'autres langages ou compiles avec un autre compilo ou pouvoir utiliser GetProcAdress sans avoir a rechercher les decoration dans les binaires.
Ici il me semble (le extern "C" ) avec le WINAPI qui lui utilise la convention d'appel Pascal (d'ou exit les decorations C++ aussi)
Pour exporter une fonction il faut la declarer avec un truc du genre declspec(dllexport) il me semble, et tu peux exporter ce que tu veux, fonctions (C/C++), variables, struct, class, etc... [edtdd]--Message édité par BENB--[/edtdd] |