在我的#include文件中,我想输出包含行号和脚本名称的调试消息,但是当@ScriptLineNumber宏发出它所在的#include文件的行号时,无法发出当前文件的文件名。我想在调试消息中定义类似@ThisScriptName的用户宏,如下所示:
_DebugOut(“+++:”& @ThisScriptName&“:”& @ScriptLineNumber&“:some text”)
输出看起来像这样:
+++:SampleIncludedFile.au3:127:some text
答案 0 :(得分:0)
无法执行此操作,以便使用任何可用的宏提供包含的文件名。
最简单的替代方法是使用在每个包含文件顶部覆盖的变量。
ExampleScript.au3:
#include "ExampleInclude.au3"
Global $ThisScriptName = "ExampleScript"
ConsoleWrite("Hello From: " & $ThisScriptName & @LF)
ExampleInclude.au3:
; #include <...>
Global $ThisScriptName = "ExampleInclude"
ConsoleWrite("Hello From: " & $ThisScriptName & @LF)
使用这种方法,重要的是在包含的其他文件后定义变量。
其他替代方案可能是使用预处理器,要么自己编写一个,要么使用其他人已经编写过的其中一个。这可以简单到只是用文件的字符串版本替换@ThisScriptName的每一个出现。