DOCUMENT:Q71286 30-OCT-1999 [utilities] TITLE :Macro Cannot Substitute String in Another Macro PRODUCT :Microsoft Programming Utilities PROD/VER:MS-DOS:1.01,1.11,1.12,1.13,1.2,1.3,1.4; NT:1.4,1.5 OPER/SYS: KEYWORDS: ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft NMAKE Utility for MS-DOS, versions 1.01, 1.11, 1.12, 1.13, 1.2, 1.3, 1.4 - Microsoft NMAKE Utility for Windows NT, versions 1.4, 1.5 ------------------------------------------------------------------------------- SUMMARY ======= NMAKE supports macro substitution that allows you to replace the occurrences of one string in a macro with a substitute string. However, NMAKE does not support nesting macros; NMAKE does not evaluate a macro in another macro's replacement text. MORE INFORMATION ================ Consider a makefile that contains the following lines: SAMPLE=sit sat set NEW=m all: echo $(SAMPLE:s=b) The echo command displays the contents of the SAMPLE macro after all occurrences of the letter "s" in the macro have been replaced by the letter "b" (the resulting output is "bit bat bet"). However, the following macro substitution does not function as intended: echo $(SAMPLE:s=$(NEW)) This macro is designed to provide the output "mit mat met." However, in an NMAKE macro substitution, any characters between the equal sign and the right parenthesis are taken literally and NMAKE does not evaluate the embedded macro. In this case, the NMAKE produces the following output: "$(NEWit $(NEWat $(NEWet)". Additional query words: 1.10 1.20 1.30 1.40 1.50 kbinf ====================================================================== Keywords : Technology : kbVCsearch kbAudDeveloper kbNMAKESearch kbNMAKE101DOS kbNMAKE111DOS kbNMAKE112DOS kbNMAKE113DOS kbNMAKE120DOS kbNMAKE130DOS kbNMAKE140DOS kbNMAKE140NT kbNMAKE150NT Version : MS-DOS:1.01,1.11,1.12,1.13,1.2,1.3,1.4; NT:1.4,1.5 ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 1999.