Skip to main content

Posts

Showing posts from November, 2007

Зачем мне нужен any_fun_ptr

В предыдущем посте, я высказался о том, что хочу эдакий generalized callback, который мог бы указывать на любую функцию. Возникает вопрос, а зачем это мне? Попробую для начала сделать некоторое введение, которое, надеюсь, немного прольет свет на эту проблему. Давайте рассмотрим простенький калькулятор, поддерживающий 26 переменных (a-z), операции +, -, *, / и скобки, имлементированный при помощи парочки Flex/Bison и с целевым языком С++. Как я уже когда-то писал , для начала необходимо сделать небольшой workaround для того, чтобы состыковать парсер, сгенерированный бизоном, и лексер, сгенерированный флексом. Для этого используется класс наследник от yyFlexLexer. файл lexer.h #ifndef _LEXER_DERIVED_CLASS_H_ #define _LEXER_DERIVED_CLASS_H_ #ifndef __FLEX_LEXER_H #undef yyFlexLexer #include <FlexLexer.h> #endif #include <iostream> #include <parser.h> namespace calc{ class Lexer:public yyFlexLexer { int yylex(); Parser::semantic_type* yylval; Parser::location_type*

any_fun_ptr

Хочу такую вещь any_fun_ptr pfun = &sin; double res = pfun(M_PI); pfun=&printf; pfun("Result %f",res); Пошел курить "Шаблоны С++" и Александреску, авось че нить придумается.

Блоговщина!!!

У меня сегодня праздник - блогу исполнился 1 год . Подвести некоторые итоги надо чтоль. Итак в номинации "Самая Популярная Статья" места распределились следующим образом std::string vs. const char* . Comparison - 229 просмотров "Must Read" C++ Books - 149 просмотров Flex & Bison C++ Interoperability Continued - 95 просмотров в номинации "Самый Популярный Бразуер" победила огненная лиса. в номинации "Самый Популярная ОС" победила самая популярная ОС. в номинации "Страна Где-Меня-Больше-Всего-Читают" победила Россия (732 посещения), за ней Украина (588 посещений) и Беларусь (66 посещений) в номинации "Город Где-Меня-Больше-Всего-Читают" победила Москва (282 посещения), за ней Киев (238 посещений) и Харьков (181 посещение) мне очень любопытно было узнать, что 15,46% посетителей приходит из закладок (вот уж выразился), 46,16 % по ссылкам с других блогов или сайтов и 38,37% через поисковики. Причем 34 поисковых запроса - эт

Gphone не будет?

В блоге Google опубликовали статью Where's my Gphone? В ней говориться, что не смотря на многочисленные спекуляции по поводу Gphone в последние несколько месяцев, анонса нового телефона от Google не будет (во киберсквоттеры то расстроились небось, - зря домены регистрировали). Однако в то же время анонсируется Open Handset Alliance и открытая платформа Android для мобильных устройств на основе Linux-ядра. 12 ноября этого года обещают сделать доступным для скачивания SDK. Платформа по заверениям обещает быть довольно удобной как для разработчиков так и для конечных пользователей устройств. Захотел проследить, а не тянется ли эта ниточка еще куда нубудь? Воспользовался все тем же поиском Google и как оказалось 17 августа 2005 года многие новостные сайты опубликовали статьи о покупке Google компании Android Inc (сейчас сайт компании редиректит на Open Handset Alliance). Сама покупка произошла вроде бы в июле, за сумму, которая не разглашается. Вообще развитие персональных ср

О чем молчит printf

Недавно, читая книгу Диомидиса Спинеллиса "Анализ программного кода на примере проектов Open Source" , узнал что функция printf возвращает результат - количество фактически выведенных символов. Посмотрел в мане и стандарте на язык С - таки да "The printf function returns the number of characters transmitted, or a negative value if an output or encoding error occurred". А я то всегда думал что она void. И практически повсеместно встречал ее использование без проверки возвращаемого значения. К чему это может привести? Это может привести к тому, что в ходе выполнения программы может возникнуть ошибка, которая пройдет незамеченной (в лучшем случае). Вообще все функции вывода - в частности, при перенаправлении стандартного потока вывода в файл - могут завершиться аварийно по целому ряду причин: на устройстве, куда перенаправляется вывод, может не хватить свободного места может исчерпаться квота пользователя на объем дискового пространства процесс может попытаться з

Бунтарь

Вчера прочел книгу Джеффри С. Янга и Вильяма Л. Саймона "iКона: Стив Джобс" . В аннотации говорится: "Эта книга о самом поразительном человеке в современной истории бизнеса – Стиве Джобсе – великом предпринимателе эпохи высоких технологий, известном своим индивидуализмом, инакомыслием и бунтарским характером. Авторы подробно описали головокружительный взлет молодого человека, очень рано добившегося успеха, и последовавшее за этим стремительное падение, во время которого Стив был изгнан не только из Apple, но и из компьютерной индустрии вообще. Эта книга приобрела скандальную известность еще на этапе ее подготовки к печати. Получив экземпляр рукописи для ознакомления, компания запретила продавать во всех магазинах Apple книги издательства Wiley&Son. Такая реакция не повлияла на желание издательства опубликовать это произведение. Книга будет интересна тем, кто хочет узнать, как происходило формирование, становление и развитие современной эры цифров