Utilizzando gcc
5.2.0, ho notato che questo codice non genera un avvertimento:Nessun avviso al ritorno NULL con gcc
#include <stddef.h>
int function(void)
{
return NULL;
}
void procedure(void)
{
return NULL;
}
ho usato le bandiere -Wall -Wextra -std=c99 -pedantic
e sono in esecuzione Archlinux. Non sono sicuro del motivo per cui questo codice funzioni correttamente su gcc
, soprattutto dal momento che clang
3.7.0 genera un avviso.
Ho anche provato con le versioni precedenti di gcc
come 4.9 o 4.7 e entrambi generano avvisi.
Le avvertenze sono:
warning: return makes integer from pointer without a cast
e
warning: ‘return’ with a value, in function returning void
Devo dire che ho provato la compilazione gcc 5.2 su Debian e il risultato è lo stesso. Quindi archlinux non sembra essere il problema.
Qual è la logica? Non riesco a trovare nulla di simile a questo altrove.
Grazie!
possibile duplicato http://stackoverflow.com/questions/1610030/why-can-you-return-from-a-non-void-function-without-returning-a-value-without-pr –
Lol you mean "duplicato inverso"? Questa domanda ti chiede perché puoi restituire un valore in un corpo di una funzione di vuoto. Il "duplicato" chiede perché è possibile scrivere un corpo di una funzione non vuoto senza un'istruzione di ritorno. – BitTickler
possibile duplicato di [Perché non restituisce 0x80000000 da una funzione che restituisce int32 \ _t causa un avviso?] (Http://stackoverflow.com/questions/32656460/why-doesnt-returning-0x80000000-from-a-function -that-returns-int32-t-causa-a-wa) –