Entendo que o padrão precisa ser seguido, mas isso não compromete a criatividade do programador? ainda existem algumas diferenças na maneira como diferentes compiladores seguem os padrões. Por exemplo, posso escrever um código que funcione, muito bom em desempenho e velocidade, isto é, tudo o que importa, mas ainda assim não necessariamente siga rigorosamente os padrões.
Não. O padrão informa o que é permitido fazer. Se não for especificado, você estará em um território de comportamento indefinido e todas as apostas serão desativadas - o programa é livre para fazer qualquer coisa.
Como você mencionou um exemplo específico de void main()
vs int main()
, posso melhorar minha resposta.
void main()
não é uma declaração padrão da função principal. Pode funcionar em alguns compiladores por meio de extensões, mas depende da implementação. Mesmo que funcione, você deve verificar se faz o que deseja. O problema é que os desenvolvedores do compilador podem decidir remover void main()
com a próxima versão do compilador, quebrando o aplicativo.
Por outro lado, o padrão define claramente a assinatura de main como int main()
e indica o que deve fazer.
Por outro lado, há coisas não definidas no padrão. Então, outro padrão pode ser aplicado (como, por exemplo, POSIX). O melhor exemplo pode ser a implementação de threads no c ++ 03, já que os programas padrão do c ++ 03 eram 1-threaded. Nesse caso, você é forçado a usar a biblioteca dependente da plataforma ou algo parecido com impulso .