c++
meteor1113
c ,emacs,mac
展开
-
杂记gcc&&make
gcc -c生成.o文件gcc -g加入调试信息gcc -o指定输出文件名Makefile的写法,下面是一个简单的例子(hello.c):CC=gccall:hellohello.o:hello.c$(CC) -o hello.o hello.chello:hello.o$(CC) -o hello hello.oclean:rm -f *.o hell原创 2009-07-15 12:01:00 · 688 阅读 · 0 评论 -
MinGW编译wxWidget静态库的问题
用MinGW编译的wxWidget静态库,编译时正常,用编译后的库编译它的sample也正常,但是我自己的程序用它编译就会报链接错误.如果编译成动态库又一切正常,而且如果用VC6编译静态库也是正常的.这个问题困扰我好几天了.昨天晚上试着把wxWidget编译成表态的单个库,再编译我的程序居然好用了,很是奇怪,睡觉的时候突然想到会不会和gcc编译时链接库的顺序有关,因为单个库的时候顺序是没有原创 2009-07-15 13:50:00 · 971 阅读 · 0 评论 -
c++标准库总结
1.容器1.1序列 vector========================= list=========================== deque==========================1.2序列适配器 stack:top,push,pop============= queue:front,back,p原创 2009-07-15 13:01:00 · 1111 阅读 · 1 评论 -
boost::random
boost随机数。直接包含random.hpp就可以使用。要声明一个generator来产生随机数,比如boost::hellekalek1995 generator(13);boost::hellekalek1995是一个随机数产生器,13是个随机数种子。然后声明一个随机数分布(uniform random numberdistribution)来产生随机数.比如boost::u原创 2009-07-15 12:56:00 · 1925 阅读 · 0 评论 -
boost::ref
ref的目的是对于一个模板函数,在传和传引用都可以的时候,把的权利下放给使用者。在参数上套一个ref(),显式告诉编译器这里引用传递,否则就是值传递。例:#include #include using namespace std;using namespace boost;struct QQ{ int k;};template int foo(T a原创 2009-07-15 12:18:00 · 1792 阅读 · 0 评论 -
对gcc的理解
gcc中,ld是链器程序,ar可将多个目录文件合成一个函数库,如ar r liba.a a.o会从a.o中生成a这个库。nm可以查看库文件的内容,如nm libstdc++.a。gcc部分参数:-L 定义连接的库目录-I 定义头文件目录-o 生成的目的文件名-O 加数字定义优化级别-g 生成调试信息-c 只编译不链接-fPic 生成相对地址代码,可用于生成动态库原创 2009-07-15 12:02:00 · 575 阅读 · 0 评论 -
boost::utility
boost::utility是一个大杂烩,有很多不好归类的小工具,函数,类等。1.checked_delete() && checked_array_delete()在编译器静态地检查即将被delete的指针。比如个只声明但并未用new为其分配空间的指针,如果delete它,编译器一般只会为警告或者根本略过,如果使用这两个函数的话会强制将其作为错误对待。2.next() & prior原创 2009-07-15 12:57:00 · 622 阅读 · 0 评论 -
boost::concept_check
concept_check是boost的概念检查库,在使用模板错的时候编译器给出的信息一般都看不懂,使用concept_check能使编译器给出的信息易懂一些。concept的使用很简单,用在一个模板函数里的时候用function_requires:template void generic_library_function(T x){ function_requires原创 2009-07-15 12:55:00 · 930 阅读 · 0 评论 -
关于临时对象的引用
根据C++标准,如果const的引用被初始化为对一个临时变量的引用,那么它会使这个临时变量的生命期变得和它自己一样。class Ref{public: Ref() {cout virtual ~Ref() {cout };Ref GetRef(){ Ref r; return r;}int main(){ co原创 2009-07-15 13:02:00 · 888 阅读 · 0 评论 -
boost::smart_ptr
标准库提供了个智能针auto_ptr,能够自动管理指针的生命周期,auto_ptr在同一时间只能有一个auto_ptr管理指和其指向资源。boost提供了几种智能指针:scoped_ptr/scoped_array,很简单,不允许复制或相互赋值,只适用于为指针的唯一所有者。shared_prt/shared_array,使用引用计数的方式管理对象的生命周期,传递指针后调用者和被调用者都原创 2009-07-15 12:59:00 · 582 阅读 · 0 评论 -
boost
BOOST_STATIC_ASSERT宏BOOST_STATIC_ASSERT(x)在由文件boost/static_assert.hpp提供,用于当常整数表达式x非真时产生一条编译期错误信息,平时我们的断言都是运行期的,而这个宏产生编译器断言,即compile-time-assertion,也叫做"静态断言"。BOOST_STATIC_ASSERT可用在任何进行声明的地方,也就是原创 2009-07-15 12:16:00 · 463 阅读 · 0 评论 -
用ScopeGuard简化异常安全代码
ScopeGuard是Loki库里的一个组件,用来在c++中进行局部资源管理。很多时候,在一个函数内部会有资源的申请和释放,如果在函数内部出现的异常,那么要完全释放资源是比较痛苦的,常见的作法是对所有可能产生异常的地方try...catch,不管是否有异常,申请的资源都是要释放的。但是这样的写法造成代码体积很大,而且很不易读。解决的方法是使用c++的RAII(资源申请即初始化),可以对原创 2009-07-15 13:02:00 · 1623 阅读 · 0 评论 -
boost其它
boost::conversionc++标准库的dynamic_cast转换时是指针失败会返回0,如果是引用转会出异常,boost提供了polymorphic_cast,即使使用指针失败也会抛出std::bad_cast异常。dynamic_cast效果很低,boost提供了polymorphic_downcast,它调试时dynamic_cast,在最终中使用static_cast来转换原创 2009-07-15 13:00:00 · 721 阅读 · 0 评论 -
boost:is_convertable
boost::is_convertable是boost::type_traits是一部分,用来判断两个类型之间是否可以转换。用法:if (is_convertable::value){ std::cout }else{ std::cout }实现没看明白。原创 2009-07-15 12:58:00 · 597 阅读 · 0 评论 -
boost::any
boost::any库是一个能保存任意类型值的类,有点像variant类型,不过variant是用一个巨大的union实在,效率低下,而boost利用模板,保存的时候并不改变值的类型,只是在需要的时候提供方法让用户主动/被动地进行类型判断以及取值。boost::any使用两层内部类placeholder和holder保存实际类型的值,类placeholder是一个接口,模板类holder是原创 2009-07-15 12:18:00 · 651 阅读 · 0 评论 -
boost库学习
从www.boost.org下载,也可以从国内镜像boost.c-view.org下载,我下载的版本是1.31,好象1.32快要出了。直接下载后解压出来即可使用,编译的时候必须把boost的路径加到命令行里。boost的大部分组件都可以直接使用,另外有一些组件因为平台的原因需要编译库,暂时我还没有自己编译过库。lexical_castlexical_cast用来做类型转换,可以是字原创 2009-07-15 12:15:00 · 1471 阅读 · 0 评论 -
c++的注释
多行注释的时候使用/*...//*/这样假如要将这段代码还原的时候只需要在注释的第一行多加一个/即可取消注释。原创 2009-07-15 12:03:00 · 487 阅读 · 0 评论 -
在gdb中查看stl容器
在gdb中查看stl容器 (本文主要内容来自于http://sourceware.org/gdb/wiki/STLSupport) 目前,gdb默认不能print出stl容器的内容,但是网上有好多种方案来做这件事,我试用了一下,比较方便的是以下两种: Table of Contents1 gdb-stl-views 2 GDB 7.0原创 2010-01-12 09:56:00 · 7355 阅读 · 1 评论