PRB: H2INC Does Not Handle #undef (120068)



The information in this article applies to:

  • Microsoft Macro Assembler (MASM) 6.1
  • Microsoft Macro Assembler (MASM) 6.11

This article was previously published under Q120068

SYMPTOMS

The H2INC utility does not appear to handle #undef correctly. For example, the following code fragment causes "error A2005: symbol redefinition: test2" to appear:
   #define test2  2
   #if test2 == 2
      #undef test2
      #define test2 3
   #endif
				

CAUSE

This behavior is by design.

The following .INC file is generated for the fragment listed in the "SYMPTOMS" section:
    option expr32
    option casemap:none

    ; Begin of file xxx.h
    test2          EQU          2t
    test2          EQU          3t
    ; End of file xxx.h
				
NOTE: In MASM, constants defined with EQU cannot be redefined.

RESOLUTION

A #define can define "text equates" as well as "numeric equates." In the case of numeric constants, use an editor to change the "EQU" to a "=".

Modification Type:MinorLast Reviewed:2/11/2004
Keywords:KB120068