变量未申明,这算BUG吗?
建一 2.au3内容为
Func _msg()
MsgBox(0, 0, $var)
EndFunc ;==>_msg
再建一1.au3
内容为
#include "2.au3"
Global $var = "你好"
_msg()
接下来,编译1.au3,你会发现编辑器提示变量$var 未申明,不管,直接继续编译,你会发现程序是可用的.
或者直接运行1.au3也是可用的,这个提示算是一个不正确的提示吗? 应该算编辑器的Bug 没啥话~ 就是想提醒一下楼主,如果2#afan兄或之后的朋友帮你解决了这个问题,请给标题加注“已解决”字样,而不是“解决鸟”,因为没人会用“解决鸟”作为关键字来搜索同类问题,请顺便连同你以前的帖子一起改过来。 实际是写的不规范把
这个文件用到的最好在这个文件里写明 留着这种隐患很不值得... 回复 1# itljl
可以这样理解。编译。相当于整合。 回复 4# rolaka
是这样的,假设你有一个程序,比较复杂的程序,如果将所有的UDF都写在一个文件,这个文件就很大,不方便阅读和编辑,拉个滚动条都要很长时间,而将不同的逻辑功能实现写进不同的文件中并包含起来,这样可以在逻辑上比较清晰.
假设在主 main.au3 中建了窗口 Global $form1
在1.au3中调用的话,不能再再去定义一次$form1啊?(当然这个1.au3我们不是通用的UDF,就是针对main.au3这个文件特殊的一个模块.) 回复 3# pusofalse
已更正 本帖最后由 rolaka 于 2010-8-18 13:42 编辑
回复rolaka
是这样的,假设你有一个程序,比较复杂的程序,如果将所有的UDF都写在一个文件,这个文件就很 ...
itljl 发表于 2010-8-18 12:27 http://www.autoitx.com/images/common/back.gif
要做到这个 也不能用这样的办法Global $var = "你好"应该在被#include的"2.au3"里 而不是在include他的1.au3里
函数这东西把 我推荐是用传递参数 要对值进行修改就用引参传递 全局变量不是什么好东西{:face (349):}
udf个人理解相当与一个封装好的工具集 不应该用到一个可能忘记被声明赋值的全局变量
就算认为include的不是udf 而是程序的一部分 一个模块 也不应该这样用...会忘记 会出错... 个人认为include就是等编译时合并与主程序在一起,你可以用下整理功能,他把所有include都去除,直接合并到你的源码,并剔除未使用的func。
scite不会过多读取include, 试试这样
1.au3
#include "2.au3"
$m = "你好"
_msg($m)
2.au3
func _msg($msg)
msgbox(0,"",$msg)
endfunc
回复 10# xsjtxy
谢谢各位的回复,我想过这样,标准的确实也应该这样写
只是有时候如果里面变量太多的话,
那不是得
Func _xFunc(z,x,y,z,....)
主要就是这个问题。 应该是吧,随便学习下。
页:
[1]