В TCL существует элегантная реализация, которая будет имитировать `ifdef, часто используемую в языках программирования. Из самого языка сценариев TCL я не смог найти способ, который поддерживается TLS-интерпретатором.эквивалент ifdef в TCL
ответ
В Tcl нет ничего, что эквивалентно «ifdef», за исключением стандартного оператора «if». Если вам не нравится стандартный оператор «if», tcl дает вам все основные строительные блоки для создания вашей собственной команды «ifdef».
Например, ifdef действительно не более чем оператор if, ищущий определенное значение. Действительно простая реализация может выглядеть примерно так:
proc define {name value} {
set ::defined($name) $value
}
proc ifdef {name script1 else script2} {
if {[info exists ::defined($name)]} {
uplevel $script1
} else {
uplevel $script2
}
}
Вы могли бы использовать его как это:
define FOO 1
...
ifdef FOO {
<do this if FOO is defined>
} else {
<do this if FOO is NOT defined>
}
Любой указатель на то, как я могу создать свою собственную команду ifdef. – Mike
@Mike: Я обновил свой ответ на примере. Мои навыки tcl довольно ржавые, но это, похоже, работает. Для более готовой к исполнению продукции вам может потребоваться больше пуленепробиваемости и сделать блок else необязательным, но я надеюсь, что это дает представление. –
Большое спасибо. Это slic solution – Mike
Если вы пытаетесь проверить переменную Evironment, вы можете сделать что-то вроде:
if {[info exists ::env(PROJ_FOO)]} {
set_lib x
} else {
set_lib y
}
Если у вас есть некоторые команды Tcl называется set_lib
.
set_lib - это специальная команда. Похоже, что единственный способ сделать это - установить переменную ENV, как в языках программирования SHELL. Я думал, есть ли какой-либо вариант командной строки для выборочного запуска кода. tcl -f foo.tcl -define PROJ_FOO (избегает установки переменной ENV) – Mike
Посмотрите на [Информация существует VarName] и подобные. Например:
если {[Информация существует MYVAR]!} {Путы «MYVAR не определены так определить его здесь»}
Побольше типизации, но очевидно, что происходит и может быть использовано для чего информации может проверить.
- 1. IFDEF эквивалент в VBA
- 2. Эквивалент синтаксиса #ifdef в protobuf
- 3. __PACKAGE__ эквивалент в tcl
- 4. Есть ли эквивалент Tcl переноса Perl?
- 5. Есть TCL эквивалент заголовка тега РНР
- 6. Tcl эквивалент для команды UNIX «cp -pL»
- 7. Имеет ли PHP эквивалент #ifdef для C/C++?
- 8. TCL/Expect эквивалент Bash $ @ или как передать аргументы в порожденный процесс в TCL/Expect
- 9. Использование #define в #ifdef
- 10. IFDEF в Makefile.am
- 11. #ifdef #ifndef в Java
- 12. Внесите #ifdef в Java
- 13. #ifdef в C#
- 14. Что это #ifdef __GNUC__ о?
- 15. IFDEF в случае, если условие
- 16. ifdef-like поведение в MATLAB
- 17. Access #ifdef код в затмении
- 18. #ifdef _DEBUG в основной функции
- 19. C++ 11 включает в #ifdef
- 20. Сигнал Qt, завернутый в ifdef
- 21. Имеет ли Tcl эквивалент PERL и Ruby backtic
- 22. Python эквивалент Tcl «поймать» с переменной для вывода ошибок
- 23. Python эквивалент команды Tcl «добавить часы» для форматирования спинбокса?
- 24. #ifdef условные не работает
- 25. Имеет ли Tcl эквивалент класса хэша, связанного с Perl?
- 26. Отдельные конкретные ветки #ifdef
- 27. Определить компилятор с #ifdef
- 28. #define, #ifdef #undef #endif
- 29. Что означает #ifdef WIN32DLL_EXPORTS?
- 30. Использование #ifdef внутри массива?
Нет, что вы пытаетесь сделать? – Kevin
На основе конкретного проекта мне, возможно, придется изменить команды на инструмент, который поддерживает язык TCL в дизайне чипов. Например, 'ifdef PROJ_FOO set_lib x' else set_lib y 'endif - это намерение – Mike
http://www.gnu.org/software/m4/ – Kevin