PRB: Inline Assembly C++ Function May Need Return Statement (107432)
The information in this article applies to:
- Microsoft C/C++ for MS-DOS 7.0
- Microsoft Visual C++ 1.0
- Microsoft Visual C++ 1.5
- Microsoft Visual C++ 2.0
This article was previously published under Q107432 SYMPTOMS
C++ functions containing inline assembly routines that store the
return value in the AX register may need a return statement added to
the function. If the function does not have a return statement, the
following error is generated:
C2561: 'function name' function must return a value
RESOLUTION
To resolve this error, create a temporary variable and move the AX
register to this variable for the return statement. This will work
around the C++ type-checking syntax. If you are using C++ version 8.0
that ships with Visual C++ for Windows NT, then the EAX register must
be used instead.
Sample Code
/* Compile options needed: none
*/
int func(void)
{
//int a; //Remove this comment to eliminate the error.
__asm
{
mov ax, 02h
;mov a, ax //Remove this comment to eliminate the error.
}
//return a; //Remove this comment to eliminate the error.
}
void main(void)
{
int a;
a = func();
}
Modification Type: | Major | Last Reviewed: | 12/2/2003 |
---|
Keywords: | kbprb KB107432 |
---|
|