Par defaut toutes les fonctions ont un nom de portée extern, si tu veux l'eviter il faut les definir comme static. (aucun rapport mais c'est malheureusement comme ca).
Pour utiliser une fonction en C++, tu n'as pas besoin de la definition complete un simple prototype en avant de l'utilisation suffit (sans mot clé extern..). En C, tu n'as meme pas besoin du prototype en avant mais c'est deconseillé de ne pas le mettre (declaration implicite, il va choisir le type de retour int par defaut).
Pour ce qui est de l'utilisation des membres de classe, tu as la besoin de la definition complete (sans le code bien entendu) de ta classe au prealable. Il n'est pas possible de changer la portee du nom en C++ comme avec les fonctions globales. Le seul moyen de cacher les methodes d'une classe aux autres modules c'est d'utiliser les namespace anonymes.
A+
LeGreg