关于#include-once的问题?[已解决]
本帖最后由 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的作用吗?可是总觉的不应该呀!
我现在处于糊涂状态,请大家不要见怪,请大家多多帮助让我清楚这个问题,谢谢,等待中... 辛苦写这么多,不过看得我眼晕…… :( 其实就是避免重复的函数。
你一个脚本里面重复多个相同的 #include "SCRIPT.AU3" 没有任何意义。但不保证调用的其它函数里面也包含#include "SCRIPT.AU3",这样就会重复。在脚本前面加 #include-once 就是为了避免这种情况。 回复 3# afan
我也晕,我的目的就是问如果在script包含多个#include "mou.au3",那么其实只执行第1个#include语句,其它不执行,感觉是这样,但还是不塌实,所以想问问,呵呵!新人都这样吗?
页:
[1]