PRB: C2129 Generated With Forward Reference Used in PrototypeLast reviewed: July 25, 1997Article ID: Q114536 |
The information in this article applies to:
SYMPTOMSCompiling a C++ source file which uses a forward reference to a struct in a function prototype will cause the compiler to generate the following error:
error C2129: static function 'Function' declared but not definedThe sample code shown below can be used to illustrate this problem. Note: the error does not occur if the same file is compiled as a C source file.
CAUSEThis is by design. In C++, a tag not previously seen is entered in the current scope. In the sample code, the ForwardRef appearing in the parameter list is a different struct than the one defined afterwards.
RESOLUTIONTo resolve this problem, move the declaration of the struct so that it is located before the function prototype.
Sample Code
/* Compile options needed: /Tp to force this to be compiled as a C++
* source file.
*/
static void Function( int i, struct ForwardRef * frPtr );
// To work around this problem place the following declaration before
// the Function prototype.
struct ForwardRef
{
int data;
};
void main( void )
{
struct ForwardRef *frPtr;
int j;
Function( j, frPtr );
}
static void Function( int i, struct ForwardRef *frPtr ){}
|
Additional query words: 8.00 8.00c 9.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |