Este código é válido sob qualquer padrão C?

Esse código segue os padrões C (por exemplo, C89, C99, C10x)?

void 
main(int a,int b, int c, int d,char *msg){
    if(d==1){
        printf("%s\n",msg);
    }else{
        main(1,2,3,1,&"Hello Stackoverflow");
    }
}

Se não, por quê?