Votre code va compiler mais il va donner des erreurs de liaison.
Construire un exécutable de votre projet comporte deux étapes:
Au cours Compilation le compilateur ne fait que traduire le code source en code objet en vérifiant la sémantique du langage .
Pendant Liaison l'éditeur de liens recherche les définitions des symboles et crée un exécutable à partir de plusieurs fichiers objets (créés lors de la compilation).
Le compilateur compile le code source dans chaque unité de traduction (fichiers .cpp + en-tête) séparément et suppose donc que la définition doit être présente dans un autre fichier source. C'est le Linker qui essaie de trouver des références aux définitions de fonctions, et donc la définition manquante sera signalée par l'éditeur de liens.
Notez que l'éditeur de liens doit relier uniquement les symboles qui sont utilisés par votre programme,
Ex: Si votre programme déclare une fonction, ne fournit aucune définition & alors jamais utilisations/appels la fonction partout, l'éditeur de liens n'a pas besoin d'incorporer le code pour sauter à l'adresse où le code objet de la fonction réside sur n'importe quel site d'appel de fonction.
Étant donné un tel scénario, l'éditeur de liens n'aura jamais besoin de rechercher la définition de la fonction. D'où le code compilera et liera.
IMHO, L'erreur de liaison se produira seulement si la fonction avec missing-definition est utilisée/appelée explicitement/implicitement quelque part. – fizzbuzz
@fizzbuzz: Oui, bien sûr. C'est le critère de base. –
Je n'ai aucune compilation ou erreur de liaison. Juste pour ajouter je n'utilise pas la fonction nulle part. Le code compile et lie bien dans le fichier .lib. – akrohit