PRB: ml /D?WIN and CMACROS.INC Produce A2016 and A2008

ID Number: Q80117

6.00 6.00a 6.00b | 6.00 6.00a 6.00b

MS-DOS | OS/2

Summary:

SYMPTOMS

In the Microsoft Macro Assembler (MASM) version 6.0, when defining

?WIN on the command line and including CMACROS.INC, the following

errors are generated:

cmacros.inc(77): error A2016: expression expected

cmacros.inc(118): error A2008: syntax error: ,

CAUSE

The command-line switch /D?WIN=1 is equivalent to ?WIN TEXTEQU <1>.

CMACROS.INC is expecting that ?WIN = 1 will be used to indicate

that Windows support is needed.

RESOLUTION

To correctly define ?WIN, do not assemble with /D?WIN=1 as a

command-line option; instead, use "?WIN = 1" in the source file

before including CMACROS.INC.

More Information:

The following examples demonstrate the incorrect and then the correct

way to define ?WIN for use with CMACROS.INC.

Sample Code 1: Incorrect

------------------------

; Assemble options needed: /D?WIN=1

INCLUDE CMACROS.INC

END

Sample Code 2: Correct

----------------------

; Assemble options needed: none

?WIN = 1 ; ?WIN must be defined before the include.

INCLUDE CMACROS.INC

END

Additional reference words: 6.00