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. |