web-dev-qa-db-fra.com

que fait réellement #include <stdio.h> dans un programme c

Je suis novice en programmation et je codais des programmes simples dans le style "Hello world". 

Dans tous ces programmes, j'ai mis #include<stdio.h> en haut mais je ne suis pas sûr de ce que cela signifie exactement. Je l'ai googlé et j'ai trouvé que stdio.h est un fichier qui contient des commandes pour le préprocesseur, mais qu'est-ce qu'un préprocesseur? Je pensais que lorsque j'écrivais du code, je le compilais et mon code se transformait en une forme qu'un "ordinateur" pouvait lire et ensuite je pouvais l'exécuter. Quelqu'un peut-il m'expliquer quelle est l'utilisation de cette commande?

17
yaylitzis

Il recherche le fichier stdio.h et le copie-le colle effectivement à la place de ces instructions #include. Ce fichier contient des prototypes de fonctions tels que printf(), scanf(), ... afin que le compilateur sache quels sont leurs paramètres et leurs valeurs de retour.

30
Tibor

L’explication la plus simple devrait peut-être être que votre programme appelle ou utilise de nombreuses fonctions dont le code ne fait pas partie de votre programme lui-même. Par exemple si vous écrivez "printf" dans votre code pour imprimer quelque chose, le compilateur ne sait pas quoi faire avec cet appel.

stdio.h est l'endroit où réside l'information pour cette printf. 

Mettre à jour:

La fonction prototype de printf (nom, type de retour et paramètres) réside plutôt dans stdio.h. Tout cela est nécessaire lors de la phase de compilation. Le code réel de printf est inclus dans la phase de liaison, qui suit la compilation. 

L'instruction include insère essentiellement tous les prototypes de fonction AVANT la compilation proprement dite. D'où le nom préprocesseur.

Mise à jour 2:

Étant donné que la question portait sur la déclaration include (et que le PO a également demandé comment définir lui-même la définition des fonctions, un autre aspect important est qu’il soit écrit comme (notez les parenthèses angulaires).

#include <stdio.h>

Le préprocesseur suppose qu'il s'agit d'un en-tête de bibliothèque standard et cherche d'abord dans les dossiers système où le compilateur a été installé.

Si au lieu de cela, un programmeur définit lui-même une fonction et place le fichier .h dans le répertoire de travail courant, il l'utilisera (notez les guillemets)

#include "stdio.h"

La suite l'illustre et le comportement est portable sur toutes les plateformes.

10
fayyazkl

Les directives de préprocesseur dans un code source sont les instructions qui sont traitées avant la compilation d'un programme. Après cette étape, le code source est converti en code source développé, car il contient maintenant les références aux fonctions déjà définies dans la bibliothèque Standard C. stdio.h est un fichier avec l'extension ".h" qui contient les prototypes (et non la définition) des fonctions d'entrées-sorties standard utilisées dans c.

0
coco97

Il indique au compilateur d'utiliser les fonctions, les structures, les macros, etc. du fichier sdtio.h, qui représente une partie de glibc (ou quelle que soit la bibliothèque standart C obtenue). Le compilateur ajoute également un enregistrement à l'exécutable de sortie "to-link list", selon lequel il devrait être lié à la bibliothèque standart C.

0
wirm