Como forçar o compilador gcc a lançar erro quando int main() não tem nenhuma instrução return. Este código compila sem erros
#include<stdio.h>
int main(){
printf("Hi");
}
Eu estou usando
gcc -Wall -Wextra -std=c99 -Wreturn-type -Werror -pedantic-errors a.c
comando para compilação
Isso não pode ser desabilitado, pois tal comportamento violaria o padrão C99 .
A Seção 5.1.2.2.3 do C99 afirma o seguinte em relação à
main
função:Você pode evitar o tratamento especial que
main
recebe renomeando-o. Compilar com-Dmain=AlternateName -Werror=return-type
produz “erro: controle atinge o fim da função não-vazia”.Naturalmente, você faria isso como uma compilação especial para testar o problema e não usar o módulo de objeto resultante dessa compilação. Uma segunda compilação normal sem
-Dmain=AlternateName
seria usada para gerar o módulo de objeto.Não é possível, pois está correto em C99