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