Thursday, February 21, 2008

extern "C" { ... }

Dans la série "le monde magique et surprenant du C++", le commandant stdio nous emmène au plus profond de la mer d'incompréhension pour observer le standard (poisson très farouche) dans son milieu naturel ...

on s'accroche bien.

extern "C" {
class X {
X() { iprintf("toto"); }
~X() { iprintf("tutu"); }
void stuut() {iprintf("stuut\a\n");}
};
}

on compile, eh oui. Ca marche. Surpris ? Je viens (dans un fichier C++) de déclarer une classe à l'intérieur d'un bloc que beaucoup considère comme "un truc compatible avec le bon vieux C". Bin détrompez-vous, 'extern "C"' sert uniquement à décider si l'on utilise ou pas le triturage de noms de fonction (en anglais, "name mangling") propre au C++.

No comments: