关于sub子程序与call调用
我想问的是call调用为什么能放在sub定义的子程序之前,代码不是一行一行往下运行的吗我都还没有定义为什么call就可以调用比如calla()suba()somevalu...
我想问的是call调用为什么能放在sub定义的子程序之前,代码不是一行一行往下运行的吗 我都还没有定义 为什么call就可以调用 比如
call a()
sub a()
some value
end sub
调用在定义之前 这样的代码 我运行也没有问题啊 我放在后面也一样 ? 为什么? 展开
call a()
sub a()
some value
end sub
调用在定义之前 这样的代码 我运行也没有问题啊 我放在后面也一样 ? 为什么? 展开
展开全部
代码一行一行运行,并不意味着就走一步算一步,程序是个整体,是个工程(这也就是为什么VB中对一套程序的整体称为工程)。程序在运行的时候,系统会把程序整体调入内存,然后对程序进行初步分析,为子过程、自定义函数等建立调用接口,并且初步检测程序中的逻辑错误,有错就提示并退出,检测通过这才开始真正运行,所以子程序与调用语句不存在谁先谁后的问题。
不过在脚本型程序(如VBScript)中,的确存在子程序与调用语句的先后问题,把调用语句放在子程序的前面有可能会造成调用失败(尤其是当子程序中调用了网页中的元素的情况下),遇到这种情况,可以把调用语句放到onload事件中来解决。
目前的编程语言都是结构化编程语言,代码都要放在子模块中运行,而各个子模块之间是没有前后顺序之分的,比如你在VB中把各个事件、子过程、自定义函数的顺序随意打乱,程序仍然是可以执行的。
最重要的一点,程序最终的目的是要编译为可执行文件的(脚本除外),这时候都是机器码了,不存在所谓一行行的代码了,也就更不可能有谁先声明谁后定义的问题了
不过在脚本型程序(如VBScript)中,的确存在子程序与调用语句的先后问题,把调用语句放在子程序的前面有可能会造成调用失败(尤其是当子程序中调用了网页中的元素的情况下),遇到这种情况,可以把调用语句放到onload事件中来解决。
目前的编程语言都是结构化编程语言,代码都要放在子模块中运行,而各个子模块之间是没有前后顺序之分的,比如你在VB中把各个事件、子过程、自定义函数的顺序随意打乱,程序仍然是可以执行的。
最重要的一点,程序最终的目的是要编译为可执行文件的(脚本除外),这时候都是机器码了,不存在所谓一行行的代码了,也就更不可能有谁先声明谁后定义的问题了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询