找回密码
 加入
搜索
查看: 3501|回复: 3

[AU3基础] 关于#include-once的问题?[已解决]

[复制链接]
发表于 2010-3-24 14:39:30 | 显示全部楼层 |阅读模式
本帖最后由 newuser 于 2010-3-24 16:46 编辑

以下代码是在AutoIt帮助文件中的例子:
;;; 下面是脚本 LIBRARY.AU3 的代码 ;;;
#include-once
Func myFunc()
    MsgBox(0,"", "此对话框由 library.au3 内的函数调出")
EndFunc

;;; 下面是脚本 SCRIPT.AU3 的代码 ;;;
#include "Library.au3"
#include "Library.au3"  ;若LIBRARY.AU3为使用 #include-once指令则会抛出一个错误
MsgBox(0, "示例", "此对话框从 script.au3 中调出")
myFunc()
Exit
; 运行 script.au3 将会输出以下两个消息框:
; 第一个是“此对话框从 script.au3 中调出”
; 第二个是“此对话框由 library.au3 内的函数调出”
1.我的第一个问题是执行script.au3时,2个#include "Library.au3"都执行了吧?只不过library.au3没有执行任何操作!但将library.au3改成如下:
#include-once
MsgBox(0,"", "此对话框由 library.au3 内的函数调出")
Func myFunc()
    MsgBox(0,"", "此对话框由 library.au3 内的函数调出")
EndFunc
那么执行script.au3,显示3个消息框:
"此对话框由 library.au3 内的函数调出"
"此对话框从 script.au3 中调出"
"此对话框由 library.au3 内的函数调出"
为什么在script.au3中,虽然使用了2个#include "Library.au3",但只执行了1次呢?
2.第2个问题,如果我将script.au3改成如下:
;;; 下面是脚本 SCRIPT.AU3 的代码 ;;;
#include "timetest.au3"
MsgBox(0, "示例", "此对话框从 timetest2.au3 中调出")
#include "timetest.au3"  ;若LIBRARY.AU3为使用 #include-once指令则会抛出一个错误
myFunc()
Exit
; 运行 script.au3 将会输出以下两个消息框:
; 第一个是“此对话框从 script.au3 中调出”
; 第二个是“此对话框由 library.au3 内的函数调出”,
此刻执行script.au3显示:
"此对话框由 library.au3 内的函数调出"
"此对话框从 script.au3 中调出"
"此对话框由 library.au3 内的函数调出"
那么最后一个消息框的显示"此对话框由 library.au3 内的函数调出"是第2个#include "Library.au3"执行的效果还是myFunc()的作用呢?
最后,我汇总问的是是不是在Library.au3中使用了#include-once,那么无论在script.au3中使用了多少个#include "Library.au3",都只是第一个#include "Library.au3" 执行,其它的都不执行啊?那么在script.au3中多次使用#include "Library.au3"又有什么意义呢?难道只是为了说明#include-once的作用吗?可是总觉的不应该呀!
我现在处于糊涂状态,请大家不要见怪,请大家多多帮助让我清楚这个问题,谢谢,等待中...

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-3-24 15:03:26 | 显示全部楼层
辛苦写这么多,不过看得我眼晕…… :(
发表于 2010-3-24 15:13:40 | 显示全部楼层
其实就是避免重复的函数。
你一个脚本里面重复多个相同的 #include "SCRIPT.AU3" 没有任何意义。但不保证调用的其它函数里面也包含#include "SCRIPT.AU3",这样就会重复。在脚本前面加 #include-once 就是为了避免这种情况。
 楼主| 发表于 2010-3-24 16:45:18 | 显示全部楼层
回复 3# afan
我也晕,我的目的就是问如果在script包含多个#include "mou.au3",那么其实只执行第1个#include语句,其它不执行,感觉是这样,但还是不塌实,所以想问问,呵呵!新人都这样吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-2 11:42 , Processed in 0.079497 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表