为什么当stack_test
函数被${GetDrives}
调用时,堆栈不会保留“Hello”,但是当使用Call stack_test
时,堆栈中存在“Hello” ?
我希望看到这个:
$0 = Hello
$0 = Hello
但我看到了这一点:
$0 = Goodbye
$0 = Hello
以下是我正在使用的测试案例:
!include FileFunc.nsh
Name stack_test
OutFile stack_test.exe
ShowInstDetails show
Page instfiles
Function stack_test
Push "Hello"
FunctionEnd
Section section1
Push "Goodbye"
${GetDrives} "HDD" stack_test
Pop $0
DetailPrint "$$0 = $0"
Push "Goodbye"
Call stack_test
Pop $0
DetailPrint "$$0 = $0"
SectionEnd
答案 0 :(得分:0)
GetDrives需要回调函数将某些内容推送到堆栈,并在回调后返回。如果按“StopGetDrives”,则中止驱动器枚举,否则如果有更多驱动器则继续。
如果它们处于这样的回调函数中,你不应该期望你的堆栈更改能够存活,并且推送次数取决于最终用户在这种情况下拥有多少驱动器......