2013年5月27日
摘要: 转载:http://blog.chinaunix.net/uid-52437-id-2108805.htmlDLL动态链接库是程序复用的重要方式,DLL可以导出函数,使函数被多个程序复用,DLL中的函数实现可以被修改而无需重新编译和连接使用该DLL的应 用程序。作为一名面向对象的程序员,希望DLL可以导出类,以便在类的层次上实现复用。所幸的是,DLL确实也可以导出类。然而事实却没这么简单,导出类的DLL在维护和修改时有很多地方必需很小心,增加成员变量、修改导出类的基类等操作都可能导致意想不到的后果,也许用户更新了最新版本的DLL库后,应用程序就再也不能工作了。这就是著名的DLL Hell(DL 阅读全文
posted @ 2013-05-27 11:05 微微来了 阅读(338) 评论(0) 推荐(0) 编辑
  2013年4月15日
摘要: 转自 csdn:http://blog.csdn.net/pgmsoul/article/details/4203941以前经常遇到这个警告信息,因为运行并没有什么问题,所以也没深究。但是耿耿于怀那个“ 0 个错误,0 个警告”的成功提示,在网上搜了一下。原来问题出在默认库的引用选择上。VS2008,项目——属性——配置属性——C/C++——代码生成:他有/MT,/MTd,/Md,/MDd四个选项,你必须让所有使用的库都使用相同的配置,否则就会有相应的提示,甚至可能会出现无法解析的函数。有时我们使用的库不是自己可以控制的,那么就只能把工程属性设置成河你使用的库相同的选项。错误1 error L 阅读全文
posted @ 2013-04-15 19:39 微微来了 阅读(391) 评论(0) 推荐(0) 编辑
  2013年3月27日
摘要: 以下内容 转自百度百科:一、inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。表达式形式的宏定义一例:#define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))为什么要取代这种形式呢,且听我道来:1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作,因此,效率很高,这是它在C中被使用的一个主要原因。2. 这种宏定义在形式上类似于一个函数,但在使用它时,仅仅只是做 阅读全文
posted @ 2013-03-27 14:25 微微来了 阅读(910) 评论(0) 推荐(0) 编辑
摘要: define 预处理时直接替换,不检查错误,编译时检查错误 typedef 编译时处理#define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926程序中的:area=PI*r*r 会替换为3.1415926*r*r如果你把#define语句中的数字9 写成字母g 预处理也照样带入。2)typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifier inside.. 阅读全文
posted @ 2013-03-27 13:51 微微来了 阅读(241) 评论(0) 推荐(0) 编辑
  2013年3月26日
摘要: 容纳非法类型的容器(可以合法)哨兵角色:NULL,-1,vector::end(),EOF,string::nposoptional解决 有些不存在的哨兵角色optional 内部保存对象的复制当模板参数类型为T & 时,保存源对象的引用,与C++内置引用类型不同,可以在声明时不进行初始化,比如 optional<int&> op;声明op时,其内部的引用成员变量并未初始化赋值时,转移包装对象,而不是对原包装对象的赋值常用成员方法:get_value_or , get , get_ptr , 构造 复制 赋值构造,和条件构造 operator * -> ,!V 阅读全文
posted @ 2013-03-26 19:19 微微来了 阅读(3173) 评论(0) 推荐(0) 编辑
  2013年3月21日
摘要: 1、在.proto文件中定义消息格式2、使用protobuf编译器3、使用c++ api来读写消息0、为何使用protobuf?1、原始内存数据结构,可以以二进制方式sent/saved.这种方式需要相同的内存布局和字节序。2、以ad-hoc方式将数据项编码成一个简单字符串----比如,将4个int类型编码成"12:3:-23:67"。这种方式简灵活。适用于简单数据。3、将数据序列化为XML。这种方式很流行,因为xml可读性好,编码解码方便,性能也好。仅仅XML dom树比较复杂。protobuf可以很好的解决上述问题。你编写一个.proto文件来描述数据结构。protob 阅读全文
posted @ 2013-03-21 14:33 微微来了 阅读(9005) 评论(0) 推荐(0) 编辑
  2013年3月14日
摘要: 视图--属性管理器--Microsoft.Cpp.Win32.user包含目录和库目录分别添加c:\boost_1_53_0c:\boost_1_53_0\stage\lib 阅读全文
posted @ 2013-03-14 15:04 微微来了 阅读(193) 评论(0) 推荐(0) 编辑
  2013年2月22日
摘要: The Standard Librarian: I/O and Function Objects:Containers of PointersMatthew Austernhttp://www.cuj.com/experts/1910/austern.htm?topic=experts-----------------------------------------------------------------------------------------------------------------------和 标准C++运行库中的绝大部分东西一样,标准容器类是用类型来参数化的:你能 阅读全文
posted @ 2013-02-22 17:31 微微来了 阅读(642) 评论(0) 推荐(0) 编辑
  2013年2月21日
摘要: vim是一款支持插件、功能无比强大的编辑器,无论你的系统是linux、unix、mac还是windows,都能够选择他来编辑文件或是进行工程级别 的coding。如果能把vim用好了,不仅编程效率能得到大幅度提高,周围人也会因此而看得头晕眼花佩服不已,自己心里当然也会心花怒放啦。下面就让我 来介绍一下如何来进行配置。这些配置所涉及到的内容有:autocomplpop, ctags, TagList,omnicppcomplete首 先Vim是内建代码补全功能的,在不需要通过任何设置的情况下就能使用。在您编辑代码的时候,键入 ctrl+x, ctrl+o, ctrl+n, ctrl+p 等快捷键 阅读全文
posted @ 2013-02-21 18:24 微微来了 阅读(1194) 评论(0) 推荐(0) 编辑
  2013年1月17日
摘要: jsoncpp是一个c++封装的json包,跨平台支持windows、linux、unix等多系统,macOS据说也支持。在windows下面使用比较简单,直接往vc里面添加项目就可以了。linux下面编译需要使用到scons,scons又是一个牛叉的工具,功能和GNU make一样,又比make简单多了。scons是python工具,需要先安装好python。下载sconshttp://www.scons.org/解压 tar -zxvf scons-2.0.1.tar.gz设定环境变量# export MYSCONS=/home/yuj/work/svn/SkyEye/c++_app/wp 阅读全文
posted @ 2013-01-17 15:22 微微来了 阅读(3573) 评论(1) 推荐(0) 编辑