找回密码
 加入
搜索
查看: 4529|回复: 11

[AU3基础] 变量未申明,这算BUG吗?

  [复制链接]
发表于 2010-8-18 01:04:21 | 显示全部楼层 |阅读模式
建一 2.au3
内容为

Func _msg()
        MsgBox(0, 0, $var)
EndFunc   ;==>_msg

再建一1.au3
内容为
#include "2.au3"
Global $var = "你好"
_msg()

接下来,编译1.au3,你会发现编辑器提示变量$var 未申明,不管,直接继续编译,你会发现程序是可用的.

或者直接运行1.au3也是可用的,这个提示算是一个不正确的提示吗?
发表于 2010-8-18 01:05:49 | 显示全部楼层
应该算编辑器的Bug
发表于 2010-8-18 01:29:06 | 显示全部楼层
没啥话~ 就是想提醒一下楼主,如果2#afan兄或之后的朋友帮你解决了这个问题,请给标题加注“已解决”字样,而不是“解决鸟”,因为没人会用“解决鸟”作为关键字来搜索同类问题,请顺便连同你以前的帖子一起改过来。

评分

参与人数 1金钱 +20 收起 理由
afan + 20 灰常同意

查看全部评分

发表于 2010-8-18 10:54:20 | 显示全部楼层
实际是写的不规范把

这个文件用到的最好在这个文件里写明 留着这种隐患很不值得...
发表于 2010-8-18 11:13:17 | 显示全部楼层
回复 1# itljl


    可以这样理解。编译。相当于整合。
 楼主| 发表于 2010-8-18 12:27:16 | 显示全部楼层
回复 4# rolaka

是这样的,假设你有一个程序,比较复杂的程序,如果将所有的UDF都写在一个文件,这个文件就很大,不方便阅读和编辑,拉个滚动条都要很长时间,而将不同的逻辑功能实现写进不同的文件中并包含起来,这样可以在逻辑上比较清晰.

假设在主 main.au3 中建了窗口 Global $form1

在1.au3中调用的话,不能再再去定义一次$form1啊?(当然这个1.au3我们不是通用的UDF,就是针对main.au3这个文件特殊的一个模块.)
 楼主| 发表于 2010-8-18 12:30:45 | 显示全部楼层
回复 3# pusofalse


    已更正
发表于 2010-8-18 13:40:23 | 显示全部楼层
本帖最后由 rolaka 于 2010-8-18 13:42 编辑
回复  rolaka

是这样的,假设你有一个程序,比较复杂的程序,如果将所有的UDF都写在一个文件,这个文件就很 ...
itljl 发表于 2010-8-18 12:27

要做到这个 也不能用这样的办法
Global $var = "你好"
应该在被#include的"2.au3"里 而不是在include他的1.au3里

函数这东西把 我推荐是用传递参数 要对值进行修改就用引参传递 全局变量不是什么好东西

udf个人理解相当与一个封装好的工具集 不应该用到一个可能忘记被声明赋值的全局变量


就算认为include的不是udf 而是程序的一部分 一个模块 也不应该这样用...会忘记 会出错...

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-8-18 13:47:22 | 显示全部楼层
个人认为include就是等编译时合并与主程序在一起,你可以用下整理功能,他把所有include都去除,直接合并到你的源码,并剔除未使用的func。

scite不会过多读取include,

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-8-18 13:52:53 | 显示全部楼层
试试这样
1.au3
#include "2.au3"
$m = "你好"
_msg($m)
2.au3
func _msg($msg)
msgbox(0,"",$msg)
endfunc
 楼主| 发表于 2010-8-18 14:05:36 | 显示全部楼层
回复 10# xsjtxy

谢谢各位的回复,我想过这样,标准的确实也应该这样写

只是有时候如果里面变量太多的话,
那不是得
Func _xFunc(z,x,y,z,....)
  
主要就是这个问题。
发表于 2010-8-18 16:18:24 | 显示全部楼层
应该是吧,随便学习下。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 22:29 , Processed in 0.082713 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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