Je vois parfois des codeurs qui utilisent NULL
comme valeur de retour de main()
dans les programmes C et C++, par exemple quelque chose comme ça:
#include <stdio.h>
int main()
{
printf("HelloWorld!");
return NULL;
}
Quand je compile ce code avec gcc, je reçois l'avertissement de:
avertissement: return rend entier à partir du pointeur sans conversion [-Wint-conversion]
ce qui est raisonnable car la macro NULL
doit être étendue à (void*) 0
et la valeur de retour de main doit être de type int
.
Quand je fais un court programme C++ de:
#include <iostream>
using namespace std;
int main()
{
cout << "HelloWorld!";
return NULL;
}
Et compilez-le avec g ++, j'obtiens un avertissement équivalent:
avertissement: conversion en type non pointeur "int" à partir de NULL [-Wconversion-null]
Mais pourquoi utilisent-ils NULL
comme valeur de retour de main()
quand il lance un avertissement? Est-ce juste un mauvais style de codage?
NULL
au lieu de 0
Comme valeur de retour de main()
malgré l'avertissement?Est-ce juste un mauvais style de codage?
Pire. La bonne façon d'indiquer que le programme s'est terminé correctement est
#include <stdlib.h>
int main (void)
{
return EXIT_SUCCESS;
}
Dans? Certains/beaucoup/tous? Implémentations C++ NULL
est une macro étendue à 0
.
Ceci, une fois étendu, donne return 0
. Qui est une valeur de retour valide.
Est-ce juste un mauvais style de codage?
Oui.