Quelle est la différence entre 1) Préprocesseur,éditeur de liens, 2)fichier d'en-Tête de la bibliothèque? Est ma compréhension correcte?

Bien, jusqu'à ce matin, j'étais complètement perdue entre ces termes. Je suppose que j'ai eu de la différence, je l'espère.

Tout d'abord, la confusion vient du fait que, depuis le préprocesseur comprend déjà les fichiers d'en-tête dans le code qui contient les fonctions, ce que les fonctions de bibliothèque n'a linker lien vers le fichier de l'objet produit par l'assembleur/compilateur? Une partie de la confusion se pose principalement en raison de mon ignorance à propos de la différence entre un fichier d'en-tête et d'une bibliothèque.

Après un peu de googling, et de la pile-débordement (est-ce le terme? :p), j'ai déduit que le fichier d'en-tête contient surtout les déclarations de fonction alors que la mise en œuvre réelle est dans un autre fichier binaire appelé la bibliothèque (je ne suis pas encore 100% sûr à ce sujet).

Donc, supposons que dans le programme suivant:-

#include<stdio.h>
int main()
{
      printf("whatever");
      return 0;
}

Le préprocesseur comprend le contenu du fichier d'en-tête dans le code. Le compilateur/compilateur+assembleur fait son travail, et puis, finalement, l'éditeur de liens associe ce fichier objet avec un autre objet fichier qui est stocké le chemin printf() œuvres.

Ai-je raison de ma compréhension? Je suis peut-être loin...donc, pourriez-vous svp m'aider?

Edit: je me suis toujours demandé sur le C++ STL. Elle toujours me troublait à ce qu'il est exactement, une collection de toutes ces en-têtes ou quoi? Maintenant, après avoir lu les réponses, je peux dire que la STL est un fichier de l'objet/quelque chose qui ressemble à un fichier de l'objet?

Et aussi, j'ai pensé lorsque j'ai pu lire les définitions de fonctions de fonctions comme l' pow(), sqrt() etc etc. Je voudrais ouvrir les fichiers d'en-tête et de ne rien trouver. Donc, est la définition de la fonction dans la bibliothèque en binaire formulaire illisible?

La compréhension que vous mentionnez sous le code est correct.
et enfin un exécutable ou d'une autre bibliothèque est produit.... 😉
Une explication (en particulier pour C, mais le C++ est à peu près la même) peut être trouvé dans mon C tutoriel, dans le chapitre sur les en-têtes: masters-of-the-void.com/book10.htm

OriginalL'auteur Paagalpan | 2012-08-29