В общем, не читайте тех газет, которые говорят, что макросы — фуфло. Макросы — сила, пусть они и послабее шаблонов будут. Я вот когда мне не хватало возможностей препроцессора cpp (cpp != c++, это название самой программы-препроцессора C), подключил m4, который, кстати, является полноценным языком программирования.
Во-первых, Вы недооцениваете мощь макросов, в них это реализуемо :) Реализовывать именно этот алгоритм лень из-за того, что получится длинновото, но получится что-то в духе:
#define HASH(s) s[0]? ... : ...
где ... будут достаточно длинными :)
Во-вторых, если инструмент есть, если он работает, почему его нужно сознательно игнорировать?
Вот Вы же сами подтвердили, что фактически виртуальная консоль не может считаться консолью. Вдумайтесь. Основная «фишка» консоли — это то, что пользователю, грубо говоря, есть что нажать и есть откуда почитать. Виртуальные консоли Linux являются всего лишь «прослойкой» (собственно, ничем более они не могут являться, ибо это интерфейс драйвера консоли).
Слушайте, Вы что, избирательно читаете то, что я Вам пишу? Консоль по определению бывает только физическая. Виртуальные консоли консолями не являются и являться не могут.
Нет уж, послушайте, как раз только физические устройства рассматривать здесь и можно, ведь именно таковой является по определению. И ссылка на исходники неадекватна, ибо там речь идёт о console drivers, то есть драйверов, работающих с консолью и виртуализирующих (мультиплексирующих) доступ к ней. Не бывает виртуальных консолей, это абстракция, существующая только для того, чтобы иметь более одного «контекста ввода», что ли. Точно также, как и виртуальные рабочие столы и так далее. Консоль всё равно одна и состоит из всё тех же дисплея и клавиатуры (если хотите, можете ещё и мышь сюда приплести).
Ещё раз, это не консоль. Консоль — физическое устройство, а не программа. Кстати, на эту тему хорошо написано в Википедии:
'The system console, root console or simply console is the text entry and display device for system administration messages, particularly those from the BIOS or boot loader, the kernel, from the init system and from the system logger. It is a physical device consisting of a keyboard and a screen.'
Поправка: виртуальная консоль в линуксах. Не реальная. Слово «виртуальная» опускать нельзя, именно оно подчёркивает мультиплексность. Настоящая же консоль — по-прежнему клавиатура и дисплей (не видеокарта!).
Виртуальная консоль — в первую очередь средство мультиплексирования доступа к консоли реальной. А реализуется уже виртуальная консоль, например, посредством программы, называющейся эмулятором терминала.
Неуместное сравнение. BIOS — вполне себе программа. А вот консолью называется исключительно устройство ввода вывода, состоящее обычно из дисплея с клавиатурой (хотя возможны модификации, например, вместо дисплея может быть принтер, либо могут добавляться другие устройства).
может, бежать?
С третьей стороны, если бы передо мной стояла такая задача, я бы просто считал нужные значения отдельным скриптом-препроцессором.
где
...
будут достаточно длинными :)Во-вторых, если инструмент есть, если он работает, почему его нужно сознательно игнорировать?
'The system console, root console or simply console is the text entry and display device for system administration messages, particularly those from the BIOS or boot loader, the kernel, from the init system and from the system logger. It is a physical device consisting of a keyboard and a screen.'