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
 
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.
The following code demonstrates the problem:
/* 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