Archive: Macro param name scope?


Macro param name scope?
I see a lot of macros that have very simple param names. What happens if one of those symbols is already defined or is the same name as a param used in another macro?
I have really long macro param names cause I have been using:
filename_macroname_paramname

But if I can get away with shorter names I would use them for readability.

I did the below test and it acts kind of funny. If I make the !define someBlah "adefine" without the space, then it compiles correctly and outputs "test" then "adefine".


OutFile testSymbol.exe
Page components
Page directory
Page instfiles

!define someBlah "a define"

!macro DoSomethin someBlah
DetailPrint "${someBlah}"
!macroend


Section mySection
!insertmacro DoSomethin "test"
DetailPrint "${someBlah}"
SectionEnd


The compile log:

OutFile: "testSymbol.exe"
Page: components
Page: directory
Page: instfiles
!define: "someBlah"="a define"
Section: "mySection"
!insertmacro: DoSomethin
DetailPrint: "test"
!insertmacro: end of DoSomethin
DetailPrint expects 1 parameters, got 2.
Usage: DetailPrint message

Macro parameters override global defines.