Czy ten kod jest ważny w dowolnym standardzie C?

Czy ten kod jest zgodny ze standardami C (np. 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");
    }
}

Jeśli nie, dlaczego?