A volte vedo programmatori che usano NULL
come valore di ritorno main()
nei programmi C e C ++, ad esempio qualcosa del genere:
#include <stdio.h>
int main()
{
printf("HelloWorld!");
return NULL;
}
Quando compilo questo codice con gcc ricevo l'avvertimento di:
avvertenza: return rende intero dal puntatore senza cast [-Wint-conversion]
che è ragionevole perché la macro NULL
deve essere espansa (void*) 0
e il valore di ritorno di main deve essere di tipo int
.
Quando realizzo un breve programma C ++ di:
#include <iostream>
using namespace std;
int main()
{
cout << "HelloWorld!";
return NULL;
}
E compilarlo con g ++, ricevo un avviso equivalente:
avvertenza: conversione in tipo non puntatore 'int' da NULL [-Wconversion-null]
Ma perché usano NULL
come valore di ritorno main()
quando emette un avviso? È solo un cattivo stile di codifica?
- Qual è il motivo da utilizzare
NULL
anziché0
come valore di ritornomain()
nonostante l'avviso? - È definito dall'implementazione se questo è appropriato o meno e, in caso affermativo, perché qualsiasi implementazione dovrebbe voler recuperare un valore puntatore?
EXIT_FAILURE
è 8, e sembra che usare 1 non sia un errore, dato che a volte è usato come successo in alcuni programmi.
NULL
puntatore come 0
(senza cast a void *
). In questo caso, il difetto passa inosservato e non genera un avviso. Non è ancora quello per cui NULL dovrebbe essere usato.