https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83798

            Bug ID: 83798
           Summary: Enhancement to Wmain warnings
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: denis.campredon at gmail dot com
  Target Milestone: ---

Compiled with g++ the following code produces some rather confusing warnings:
---------------
int main(short s, void** t, int** u, int** v) {}
---------------
1 : <source>:1:5: warning: first argument of 'int main(short int, void**,
int**, int**)' should be 'int' [-Wmain]
 int main(short s, void** t, int** u, int** v) {}
     ^~~~
1 : <source>:1:5: warning: second argument of 'int main(short int, void**,
int**, int**)' should be 'char **' [-Wmain]
1 : <source>:1:5: warning: third argument of 'int main(short int, void**,
int**, int**)' should probably be 'char **' [-Wmain]
1 : <source>:1:5: warning: 'int main(short int, void**, int**, int**)' takes
only zero or two arguments [-Wmain]
---------------

In the first three warnings, just '::main' should be displayed, like when
compiled with gcc, instead of the full signature.
For the fourth one, we can see that gcc also accepts three arguments in main,
for the env, not only 0 or 2.

Reply via email to