随笔分类 -  C++

asn1c中 std::max编译冲突解决方法
摘要:1>------ 已启动全部重新生成: 项目: libasnparser, 配置: Debug Win32 ------1>正在删除项目“libasnparser”(配置“Debug|Win32”)的中间文件和输出文件1>正在编译...1>Main.cpp1>e:/work/libasnparser/libasnparser/position.hh(83) : error C2589: “(”: “::”右边的非法标记1>e:/work/libasnparser/libasnparser/position.hh(83) : error C2059: 语法错误 阅读全文

posted @ 2010-08-29 21:11 NBSTAR 阅读(443) 评论(0) 推荐(0)

Flex&Bison Tips (2010-08-27) 应用auto_ptr避免内存泄露
摘要:todo: 阅读全文

posted @ 2010-08-27 00:42 NBSTAR 阅读(183) 评论(0) 推荐(0)

Flex&Bison Tips(2010-08-27) 如何在VC中更好的断点调试flex&bison词法和语法分析器
摘要:断点设置:todo: 阅读全文

posted @ 2010-08-27 00:39 NBSTAR 阅读(195) 评论(0) 推荐(0)

Flex&Bison Tips(2010-08-26)如何改善 flex & bison 在VC下的编辑环境
摘要:我在VC下安装VC助手(VisualAssistX), 让它可以高亮显示C/C++语法,同时支持快捷跳转、自动联想、简单重构等功能。1. 将flex的输入文件命名为后缀 .cpp, 但是将这个.cpp文件从工程编译中排除,这样既可以方便在flex输入文件中写C/C++代码。同时编译也不会报错。2. 如果要让flex生成的头文件和源文件具有自己的名字,也很简单,在flex的输入文件中使用如下选项就可自己指定想要的文件名:/* 自命名输出文件 */%option outfile="Lexer.cpp" HEADER-FILE="Lexer.h" 通过以上设置 阅读全文

posted @ 2010-08-27 00:34 NBSTAR 阅读(507) 评论(0) 推荐(0)

windows 下 flex 命令行批处理文件
摘要:1. 通过cygwin 安装 flex2. 新建一个命令行批处理文件调用flexflex.bat@set flex_dir="E:/SDK/cygwin/bin"@set Path=Path;%flex_dir%@REM flex command line@REM Usage@REM flex.bat %grammer_file_name@REM @REM flex parameters used in our command line@REM --nounistd not include unistd.h @REM --never-interactive t... 阅读全文

posted @ 2010-08-19 21:32 NBSTAR 阅读(435) 评论(0) 推荐(0)

GNU flex unistd.h在VC下的编译问题
摘要:问题现象:...: fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory 原因,flex生成的代码如下:#ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first 阅读全文

posted @ 2010-08-19 21:28 NBSTAR 阅读(927) 评论(0) 推荐(0)

如何让qmake生成的Makefie不链接Qt库
摘要:在CSDN上搜索了一下,大部分关于qmake的实例都是链接到Qt库,包括QtCore和QtGui。如果只是想写一个普通的C++命令行程序,链接Qt库显然是使得最终生成的程序尺寸变得臃肿,而且必须要安装庞大的Qt包。那么如何让qmake不链接到Qt库呢? 默认情况下,qmake是要链接QtCore和QtGui两个库的。即使你什么也不做,因为这是默认行为。通过以下配置可以解除这种配置。#不需要QT CONFIG -= qt 简单吧,这下清净了,我们明确告知qmake这不是qt程序,只需要qmake为我们生成普通Makefile,其他什么也不要多做。以下是我为boost asio中一个简单tcp服务 阅读全文

posted @ 2010-08-09 23:53 NBSTAR 阅读(520) 评论(0) 推荐(0)

以boost factory & boost function实现对象工厂设计模式
摘要:工厂对象模式简介在GoF的《设计模式》一书中,对Factory Method/Object Method 意图描述如下:定义一个用于创建对象的接口,让子类决定实例化是哪一个类。 Factory Metho是一个类的实例化延迟到其子类。其结构图如下: 其中, 类 Product 定义了一类对象的接口。 ConcreteProduct 实现 Product 的接口。 Creator是工厂方法的包装器。ConcreteCreator 类实现Creator的接口。基于以上结构,每个ConcreteProduct必须带有一个 ConcreteCreator, 用来产生特定的ConcreteProduc. 阅读全文

posted @ 2010-08-05 21:42 NBSTAR 阅读(1043) 评论(0) 推荐(0)

Boost.Asio和ACE之间关于Socket编程的比较
摘要:ACE是一个很成熟的中间件产品,为自适应通讯环境,但它过于宏大,一堆的设计模式,架构是一层又一层,对初学者来说,有点困难。 ASIO是基本Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。 最近分析ASIO的源代码,让我无不惊呀于它设计。在ACE中开发中的内存管理一直让人头痛,ASIO的出现,让我看到新的曙光,成为我新的好伙伴。简单地与ACE做个比较。 boost::asio是一个高性能的网络开发库,Windows下使用IOCP,Linux下使用epoll。与ACE不同的是,它并没有提供一个网络框架,而是采取组件的方式来提供应用接口。但是对于常见的情况,采用一个好 阅读全文

posted @ 2010-08-03 23:28 NBSTAR 阅读(205) 评论(0) 推荐(0)

从C++类成员函数作为回调函数说起
摘要:在网络消息处理中经常要用到回调机制。例如处理异步网络操作的前摄器设计模式(Proactor),(可以参考 《C++ 网络编程 卷2》中关于ACE Proactor模式实现 )。异步的 Web 服务器将这样来利用前摄器模式:首先让 Web 服务器向 OS 发出异步操作,并将回调方法登记到 Completion Dispatcher(完成分派器),后者将在操作完成时通知 Web 服务器。于是 OS 代表 Web 服务器执行操作,并随即在一个周知的地方将结果排队。Completion Dispatcher 负责使完成通知出队,并执行适当的、含有应用特有的 Web 服务器代码的回调。 使用前摄器模式的 阅读全文

posted @ 2010-07-29 00:20 NBSTAR 阅读(640) 评论(0) 推荐(0)

C++工厂模式实现与改进小结
摘要:TODO: 阅读全文

posted @ 2010-07-28 23:24 NBSTAR 阅读(126) 评论(0) 推荐(0)

为什么C++成员函数不能作为C-Style回调函数?
摘要:1.为什么C++成员函数不能作为C-Style回调函数?在C语言中,通过注册函数指针的方式,来实现函数回调。如下是一个的例子。//回调函数指针typedef int (*functionPointer_t)(int*); int myFunc1(int *arg){ *arg = 100; return 0;}void CallerFunc(functionPointer_t fp){ int arg = 0; fp(&arg); //这里通过函数指针调用被调函数}int main(){ CallerFunc(myMemberFunc1); return 0... 阅读全文

posted @ 2010-07-28 22:36 NBSTAR 阅读(236) 评论(0) 推荐(0)

如何将flex 生成的可重入C词法扫描器与bison生成的C++语法解析器配接起来
摘要:如题,本文主要是flex与bison 的配合问题。 bison设置在bison用户手册中已经详尽说明了,这里不再赘述。 主要说明一下flex 的设置,并给出一个示例工程。1. flex设置%{/* 由于flex在输入结束时默认的yyterminate()返回值为0,与bison中token::END可以能不一致 */#define yyterminate() return token::END /* end of input file. */%}/* 生成可重入C代码 */%option reentrant noyywrap /* 适配bison */%option bison-bridge 阅读全文

posted @ 2009-06-12 17:44 NBSTAR 阅读(811) 评论(0) 推荐(0)

导航