Overcoming "C4071 No Function Prototype Given" WarningLast reviewed: July 22, 1997Article ID: Q69898 |
3.00 3.10
WINDOWS
kbprg kbcode
The information in this article applies to:
SYMPTOMSCode that is compiled using the Microsoft C compiler's warning level 3 (/W3) or higher and that calls functions through FARPROC pointers causes the Microsoft C compiler to report warning C4071, "No Function Prototype Given."
CAUSEPointers to functions are commonly used when an application explicitly loads dynamic-link libraries (DLLs) through the Windows LoadLibrary function. Function pointers declared with FARPROC do not inherit function prototype information.
RESOLUTIONModify the function pointers declarations to include function prototype information.
MORE INFORMATIONThe following code sample uses the generic FARPROC far-pointer-to-function data type. Compiling the code with Microsoft C at warning level 3 or higher results in a C4071 warning:
FARPROC lpfnErrorProc; lpfnErrorProc = GetProcAddress(hModule, MAKEINTRESOURCE(1)); (*lpfnErrorProc)(hWnd, (LPSTR)"Error Message");However, the following code sample defines custom far-pointer-to- function data types which provide information about the function arguments. This code does not produce the warning:
// typedef declarations typedef VOID FAR PASCAL FNERRORPROC(HWND, LPSTR); typedef FNERRORPROC FAR *LPFNERRORPROC; // variable declaration LPFNERRORPROC lpfnErrorProc; // variable assignment and indirect function call lpfnErrorProc = GetProcAddress(hModule, MAKEINTRESOURCE(1)); (*lpfnErrorProc)(hWnd, (LPSTR)"Error Message"); |
Additional reference words: 3.00 3.10
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |