Vrai ou faux ? Lorsque, dans un module, la déclaration d'une fonction appelée n'est
pas conforme à sa définition dans un autre module, l'exécution est
indéterminée et peut provoquer un plantage.
Vrai ou faux ? Lorsque, dans un module, la déclaration d'une fonction appelée n'est
pas conforme à sa définition dans un autre module, la compilation échoue.
Vrai ou faux ? Lorsque, dans un module, la déclaration d'une fonction appelée n'est
pas conforme à sa définition dans un autre module, l'édition de liens
échoue.
À quoi sert la déclaration d'une fonction ?
À connaître les types des paramètres et du résultat d'une fonction
pour réaliser son appel.
(voir
cette section)
À quoi sert l'édition de liens ?
À s'assurer du fait que toutes les fonctions invoquées dans le
programme ont bien une définition et une seule.
(voir
cette section)
À quoi sert la définition d'une fonction ?
À fournir le code constituant son algorithme.
(voir
cette section)
Comment distinguer au premier coup d'œil la définition d'une fonction
de sa déclaration ?
Après le prototype, la définition contient des accolades avec le code
de la fonction, alors que la déclaration n'est terminée que par un
point-virgule.
(voir
cette section et
cette section)
Décrire précisément ce que fait la commande suivante :
$ gcc prog01.o module_A.o -o prog01 ↵
Le compilateur
gcc invoque l'éditeur de liens pour rassembler les
fichiers objets
prog01.o et
module_A.o afin de produire le
fichier exécutable
prog01.
(voir
cette section)
Dans le contexte de la fabrication de programmes exécutables,
qu'appelle t-on un
fichier objet ?
Le fichier intermédiaire qui est le résultat de la compilation d'un
unique fichier de code source (une
unité de compilation) ;
de tels fichiers sont rassemblés à l'édition de liens.
(voir
cette section)
Vrai ou faux ? Un
fichier objet est directement exécutable.
Comment assure t-on la cohérence entre la déclaration d'une fonction
appelée depuis un module et sa définition dans un autre module ?
Par l'inclusion dans les deux modules du même fichier d'en-tête qui
contient la déclaration de la fonction.
(voir
cette section et
cette section)
À quoi sert la construction
#ifndef/#define/#endif dans les fichiers
d'en-tête ?
À empêcher les inclusions multiples de ce même fichier d'en-tête dans une
unité de compilation.
(voir
cette section)