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();.