zoukankan      html  css  js  c++  java
  • NSIS学习-Push&Pop(转发)

    /*
    编写:Ansifa
    NSIS除了提供了变量$0~$9,$r0~$r9来存放文字外,还有堆栈,
    而通过Push和Pop这两个堆栈操作可以将一些数字或字符暂时存放到堆栈里面
    下面是一个简单例子:

    实现功能是保护某个变量的值
    */
    SetCompressor /SOLID lzma
    SetCompress force
    XPStyle on
    OutFile "aaa.EXE"
    Name "aaa"
    Section

    StrCpy $0 10    ;将10赋给$0
    MessageBox MB_OK '"$0-这是赋值得到的"'

    Push $0            ;将10压入堆栈

    StrCpy $0 5
    MessageBox MB_OK '"$0-此时的值是"StrCpy $0 5"赋值得到的,刚才的存在变量$0的10已经覆盖了"'

    Pop $0            ;将堆栈的数(刚才压进的10)弹出到$0

    MessageBox MB_OK '"$0-这是堆栈弹出的"'

    SectionEnd

    /*
    好,例子看完了,问什么说保护变量的值呢?
    本来$0值是一个数X,X未知,设为原始状态,

    不过某个时刻因为变量不够用,或者其他原因想使用$0这个变量,
    但是$0的X或许以后还要使用,所以在开始使用$0前,将$0用Push $0放入堆栈
    使用完后Pop $0,那样就能做到$0使用前后不变了

    $0='aaaa' ----这是原始态
    ........    ----中间代码


    Push $0    ----开始使用$0,将要改变他的值
    StrCpy $0 5     ---现在改变了$0,如果没有PushPop,以前的'aaaa'就肯定会找不回来了
    ........    ----中间代码
    Pop $0    ----使用完$0,还原他本来值


    此时的$0就像没有上面的暂时调用一样.仍然延续原始态
    MessageBox MB_OK '$0' ----显示'aaaa'

    ........    ----中间代码*

  • 相关阅读:
    kafka参数解析+启动参数解析
    flume参数解析+启动参数解析
    flume+flume+kafka消息传递+storm消费
    C++快速读取大文件
    阿里云ecs : Couldn't connect to host, port: smtp.aliyun.com, 25; timeout -1;
    对渲染相关操作封装的类库
    51nod-1134 最长递增子序列,用线段树将N^2的dp降到NlogN
    51nod-1503 猪和回文
    51nod1073-约瑟夫环,递归。
    算法基础题
  • 原文地址:https://www.cnblogs.com/Asee/p/3723697.html
Copyright © 2011-2022 走看看