C++ JIS X3014:2003より引用
> 処理系は,関数 main をあらかじめ定義しておいてはならない。その返却値の型は,int とする。
> これを除いて,関数 main の型は,処理系定義とする。処理系は,次に示すどちらの形での関数
> main の定義も受理できなければならない。
>      int main(void) { /* ... */ }
>      int main(int argc, char* argv[]) { /* ... */ }

C++ならば、void mainは規格違反。
Cは>>613からvoid mainは規格違反ではない。(JIS X3010:2003)