Extern "C" se stavlja u C++ fajlove, ili u deklaraciji funkcija kako bi se izbegli problemi pri linkovanju sa C fajlovima - naime kod C++ funkcija kompajler ih zavodi kao "mangled names" .
Recimo - u C++
int MojaFunkcija(float a, float b) se belezi i referencira (u razresavanju simbola) kao:
MojaFunkcija@@YAHMM@Z
Ovo govori kompajleru i linkeru o kojim se prosledjenim parametrima radi (vrlo bitno ako recimo klasa ima vise implementacija iste funkcije koje se razlikuju samo po prosledjenim parametrima)
Tako da ako hoces da kombinujes C kod sa C++ kodom, C++ kompajleru moras dati do znanja da je odredjena funkcija C tipa - kako ne bi dobio nerazresene simbole jer C deo koda ne razume "mangled names"