Потребовалось мне тут прикрутить к замечательной программе putty подсветку синтаксиса на лету в терминальной сессии. И так вышло, что на новом рабочем ноутбуке я пока еще не успел поставить Студию. У putty есть makefile’ы для Visual Studio, Borland’а, Cygwin’а и LCC. Первых двух у меня не было, и взять их было негде, Cygwin недолюбливаю из-за необходимости таскать с собой потом dll’ки, и чудом выбор пал на LCC. До этого я никогда этот компилятор не использовал.
И я был приятно удивлен практически всему увиденному. Во всего шести мегабайтах дистрибутива вы получаете быстрый компилятор С99 с поддержкой современных процессоров, линковщик, ассемблер, компилятор ресурсов и внушительную библиотеку.
Про библиотеку хочу сказать отдельно. Помимо стандартного набора libc и Win32 API, там полно всего остального. Лично я был несказанно удивлен простой, и порой столь нужной функцией ping()
(и не надо больше вызывать ping.exe
в скрытом окне).
В общем, с помощью также идущих в комплекте регулярных выражений, я быстро подхачил putty как мне было нужно. Попутно проронил ностальгическую слезу от программирования оконного интерфейса на чистом Win32 API и ощутил некоторые приятности С99. Например, объявление переменных не в начале блока, а где удобно, и размер автоматических массивов задавать не статически, а из переменной. C99 однозначно стоит внимательного изучения.
Приведу небольшую выжимку из идущих в комплекте библиотек (кроме стандартных libc и Windows API, конечно). Думаю, названия говорят сами за себя.
gl.h OpenGL
sqlite.h
bignums.h Работа с числами произвольной точности
bitstring.h
bluetoothapis.h
d3d.h
d3dx.h
dynloader.h Работа с DLL’ками
gc.h Сборщик мусора (требует запуска, конечно)
getopt.h
icmpapi.h
int128.h
matrix.h Работа с векторами и матрицами
mq.h IBM MQ
msi.h
netmon.h
netsh.h
pcre.h Регулярные выражения в стиле Perl
ping.h PING!
ras.h
regexp.h Простой API для регулярных выражений (regcomp() и regexec())
snmp.h
sqlite3.h
str.h Работа со строками в стиле C99
tapi.h
Итак, если вам быстро нужен небольшой компилятор (дистрибутив всего шесть мегабайт), для написания программы на С99 под Windows (для графического интерфейса придется все делать на чистом Win32 API), имеющий в комплекте в дополнение к libc и Win32 API приличный набор разнообразных библиотек, то LCC – это очень сильный кандидат.
Кстати, отдельно можно скачать и 64-битную версию компилятора.
Единственное, чего я не пробовал – это линковать объектники LCC с другими компиляторами. Кто имеет опыт – поделитесь.