FIX: Return Value Not Ignored with NMAKE's Dash (-) Command (122220)



The information in this article applies to:

  • Microsoft Program Maintenance Utility (NMAKE), when used with:
    • Microsoft Visual C++ 1.5
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.0
    • Microsoft Visual C++ 2.0

This article was previously published under Q122220

SYMPTOMS

When using the dash command (-) in a makefile to turn off error checking for a given command, return values that are greater than 255 will not be ignored. NMAKE will detect an error and the make process will be terminated, as shown below:
NMAKE : fatal error U1077: 'C:\WINDOWS\SYSTEM32\CMD.EXE' : return
code '0xYYY'
Stop.
YYY is the hexadecimal value of the return code from the command that generated the error.

RESOLUTION

Use the !CMDSWITCHES (+/-) I directive to work around this problem. For example:
   !CMDSWITCHES +I
   mylabel:
        mycommand
   !CMDSWITCHES -I
				

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This problem was fixed in Microsoft Visual C++, 32-bit Edition, version 4.0.

MORE INFORMATION

Sample Code

The following makefile will prematurely terminate after the mycommand statement if an error MYCOMMAND.EXE returns is a value greater that 255. A small MS-DOS- or Windows NT-based console program returning a value can be used as mycommand.
mylabel:
     -mycommand
				

Modification Type:MajorLast Reviewed:12/1/2003
Keywords:kbfix KB122220