C4071 Caused by Missing "void" in Function Prototype

ID: Q59439

6.00 6.00a 6.00ax 7.00 | 6.00 6.00a | 1.00 1.50

MS-DOS                 | OS/2       | WINDOWS
kbtool kbcode

The information in this article applies to:

   The Microsoft C/C++ Compiler (CL.EXE), included with:
    - Microsoft C for MS-DOS, versions 6.0, 6.0a, and 6.0ax
    - Microsoft C for OS/2, versions 6.0 and 6.0a
    - Microsoft C/C++ for MS-DOS, versions 7.0
    - Microsoft Visual C++ for Windows, versions 1.0 and 1.5

SUMMARY

Function prototypes must have parameter lists. If no arguments are to be passed to a function, the parameter list must contain the keyword "void". At warning level three (/W3), leaving "void" out of such a prototype parameter list leads to the following warning message in C version 6.0:

   C4071 'name' : no function prototype given

Microsoft C/C++ version 7.0 and later generate:

   C4013: 'myfunc' undefined; assuming extern returning int
   C2371: 'myfunc' : redefinition; different basic types

No error is generated with the 32-bit C/C++ compilers.

MORE INFORMATION

The following code demonstrates the problem:

Sample Code

/* Compile option needed: none

  myfunc is not prototyped correctly
*/ 

#include <stdio.h>
void myfunc();          /* Missing void in parameter list */ 
void main(void)
{
  myfunc();             /* myfunc still not prototyped */ 
}

void myfunc()    /* Function definition doesn't need void */ 
{
  printf("Hello\n");
}

Additional reference words: kbinf 1.00 1.50 6.00 6.00a 6.00ax 7.00 8.00 8.00c KBCategory: kbtool kbcode KBSubcategory: CLIss Keywords : kb16bitonly

Last Reviewed: July 18, 1997