2016-09-13 6 views
0

В моих #include-файлах я хочу выводить отладочные сообщения, содержащие номер строки и имя сценария, но в то время как макрос @ScriptLineNumber испускает номер строки в файле #include, in, нет способа испускать имя файла текущего файла. Я хотел бы определить что-то пользовательский макрос как @ThisScriptName в сообщении отладки, как это:Пользовательский макрос AutoIT для испускания текущего имени сценария

_DebugOut ("+++" & @ThisScriptName & ":" & @ScriptLineNumber & ": какой-то текст")

Вывод будет выглядеть примерно так:

+++: SampleIncludedFile.au3: 127: некоторый текст

+0

Возможный дубликат [есть способ в скрипте autoit, чтобы найти, был ли текущий файл включен или он запущен самостоятельно?] (Https://stackoverflow.com/questions/29540373/is-there-a-way -in-autoit-script-to-find-if-current-file-was-included-or-it-is-ru) – user4157124

+0

Не дубликат. Ссылка ссылается на проблему, когда кодеру необходимо знать, включен ли скрипт или нет. Мой вопрос заключался в том, как создавать отладочные операторы с текущим именем скрипта # include, например @ScriptLineNumber для номеров строк. –

ответ

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 строковой версией файла.

+0

Я думаю, что препроцессор будет тем, что я хочу. Я googled вокруг и не мог найти учебник о том, как добавить/вызвать препроцессор. Кто-нибудь знает, как подключить препроцессор к сборке/компиляции? –

+0

https://www.autoitscript.com/forum/topic/133808-autoit-with-c-preprocessor/ – Bookeater

+0

Кроме того, «Global $ ThisScriptName = blablabla» не будет работать, поскольку он может быть объявлен только один раз, а не несколько как это было предложено. –

 Смежные вопросы

  • Нет связанных вопросов^_^