Erreurs retournées par clang¶
Ce document reprend les principaux messages d’erreurs retournés par le compilateur clang avec un exemple simple qui illustre chaque message d’erreur et comment il peut être corrigé.
Sauf indication contraire, clang est lancé avec les arguments
-Weverything -fcaret-diagnostics -fdiagnostics-fixit-info -std=c99
.
control reaches end of non-void function (clang)¶
Auteur de la section : Olivier Bonaventure
Considérons le programme simple ci-dessous.
int f() {
}
Lorsque ce programme est compilé avec clang, il retourne deux erreurs.
noreturn.c:2:5: warning: no previous prototype for function 'f' [-Wmissing-prototypes]
int f() {
^
noreturn.c:5:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
2 warnings generated.
La première, no previous prototype for function (clang) indique que la fonction f
a été
définie sans que sa signature n’aie été déclarée dans un prototype préalable. La
seconde, control reaches end of non-void function (clang) indique que l’étudiant a
oublié de retourner la valeur de retourde la fonction f
(dans ce cas, la valeur
attendue est detype int
).
no previous prototype for function (clang)¶
void f() {
}
Lorsque ce programme est compilé avec clang, il retourne l’erreur
no previous prototype for function qui indique que la fonction f
a été
définie sans que sa signature n’aie été déclarée dans un prototype préalable.
Cette erreur peut être corrigé en incluant au début du fichier ou dans un fichier .h
la
signature `void f();
.