Microsoft KB Archive/70249

= Max Identifier Length May Cause Mixed C/MASM Conflict =

Article ID: 70249

Article Last Modified on 10/29/2003

-

APPLIES TO


 * Microsoft Macro Assembler 5.1 Standard Edition
 * Microsoft Macro Assembler 5.1a

-



This article was previously published under Q70249



SUMMARY
The Microsoft Macro Assembler (MASM) versions 5.1 and 5.1a allow identifiers to have a length of 31 characters. The Microsoft C Compiler versions 5.1, 6.0, and 6.0a also allow identifiers to have a length of up to 31 characters. However, the C compiler adds an implied leading underscore, which may make the total length of an identifier 32 characters.

The above limits may cause a problem when performing mixed-language programming where a C identifier that is 31-characters long needs to be recognized by a Macro Assembler module. The C identifier of 31 characters becomes 32 characters because of the added leading underscore, and the assembler can only recognize 31 characters. If this occurs, a &quot;L2029: unresolved external&quot; error will be generated by the linker when it does not locate a symbol with the truncated name.



MORE INFORMATION
To get the assembler routine to match the C identifier of 31 characters, you can do one of the following:

  Use the .MODEL directive and specify the C language type. For example: .MODEL small,c ; The C language type specifies C conventions The C language type specifies C naming and calling conventions. It will allow the use of a 31-character identifier and also add the implied leading underscore.  Modify the C program to shorten the length of the variable's name. Update to Macro Assembler version 6.0. Identifiers may be up to 247 characters long with version 6.0.

Additional query words: kbinf 5.10 5.10a

Keywords: KB70249

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.