随笔分类 -  c/c++

摘要:1. 安装C的帮助手册如果你使用的Linux发行版, 默认没有安装C语言的库函数MAN手册, 使用下面的方法解决: # sudo apt-get install manpages # sudo apt-get install manpages-de # sudo apt-get install manpages-de-dev # sudo apt-get install manpages-dev2. 安装C++的帮助手册一般的Linux发行版不会默认安装C++的帮助手册. 安装方法如下http://gcc.gnu.org/mirrors.html是一个GCC的镜像站点进入http://mirr 阅读全文
posted @ 2012-11-01 17:27 mugua250 阅读(1426) 评论(0) 推荐(0)
摘要:1. 現実场景 在很多电影电视剧里,武功最高的往往是太监,所谓“欲练此功,必先自宫”,太监的武功为什么会这么高?我想应该是闲的。如果说面向对象的世界里有父子的话,那么太监这个类应该就是无法生子的类。他们是无法被继承的,不过,他们是可以继承别人的。 2. 技術問題 要实现一个无法被继承的类,Java为我们提供了一个关键字final,但是C++里没有,那作为C++程序员如何写出一个无法被继承的类呢?构造函数和析构函数。 为什么C++的构造函数和析构函数能够实现这点呢?因为C++的类继承里有一个规则,就是子类在实例化的时候,必须先调用父类的构造函数。对象销毁的时候,也必须调用父类的析构函数。... 阅读全文
posted @ 2012-10-30 22:26 mugua250 阅读(199) 评论(0) 推荐(0)
摘要:引用自http://blog.csdn.net/lwhsyit/article/details/2828306类似Windows系统中的动态链接库,Linux中也有相应的共享库用以支持代码的复用。Windows中为*.dll,而Linux中为*.so,我来详细的告诉你如何在linux下编写动态库,以及如何使用它.在linux下编写动态链接库的步骤:1. 编写库的头文件和源文件.2. 把所有涉及到的源文件用如下方式编译为目标文件:g++/gcc -g -c -fPIC -o library1.o library1.cppg++/gcc -g -c -fPIC -o library2.o libr 阅读全文
posted @ 2012-10-18 09:08 mugua250 阅读(422) 评论(0) 推荐(0)
摘要:引用自:http://blog.csdn.net/lwhsyit/article/details/2830783库文件在连接(静态库和共享 库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到 库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用: 在环境变量 LD_LIBRARY_PATH 中指明库的搜索路径。 在 /etc/ld.so.conf 文件 阅读全文
posted @ 2012-10-18 09:07 mugua250 阅读(364) 评论(0) 推荐(0)
摘要:引用自:http://kasicass.blog.163.com/blog/static/39561920101118112913724/ 所有分析,基于 2.1.0 的代码。建立在 socket 之上的 light-weight message queue。不再需要自己管理 tcp 分包。简单、实用。来自 iMatix 的一个库,iMatix 主要面向金融行业。(业务逻辑决定设计)http://www.zeromq.org/最详细的使用指南:http://zguide.zeromq.org/chapter:allZeroMQ 的使用:Hello 0MQ, Echo ServerMulti-p 阅读全文
posted @ 2012-10-17 16:11 mugua250 阅读(234) 评论(0) 推荐(0)
摘要:引用自http://www.cnblogs.com/amethyst623/articles/1946499.html前言如果普通编程不需要了解这些东西,如果想精确控制你的目标文件的格式或者你想查看一下文件里的内容以便作出某种判断,那么你可以看一下下面的工具:ar,nm,objdump,objcopy。具体用法请参考man在线手册。ar基本用法 ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。原始文件的内容、模式、时间戳、属主、组等属性都保留在库文件中。 下面是ar命令的格式: ar .. 阅读全文
posted @ 2012-10-16 14:35 mugua250 阅读(646) 评论(0) 推荐(0)
摘要:OBJ文件格式分析工具: objdump, nm,ar首先简要阐述关于gcc、glibc和 binutils模块之间的关系一、关于gcc、glibc和binutils模块之间的关系1、gcc(gnu collect compiler)是一组编译工具的总称。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持,如 libgcc_s.so、libstdc++.so等。2、binutils提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编 (objdump)、elf结构分析工具(readelf)、无效调试 阅读全文
posted @ 2012-10-16 14:17 mugua250 阅读(658) 评论(0) 推荐(0)
摘要:引用自:http://www.cnblogs.com/hnrainll/archive/2012/08/15/2640558.htmlANSIC标准定义了以下6种可供C语言使用的预定义宏:__LINE__ 在源代码中插入当前源代码行号__FILE__ 在源代码中插入当前源代码文件名__DATE__ 在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕__TIME__ 在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕 __STDC__ 当要求程序严格遵循ANSIC标准时该标识符被赋值为1。__cplusplus标识符__LINE__和__FILE__通常用来调试程序;标识符__DAT 阅读全文
posted @ 2012-10-16 13:58 mugua250 阅读(334) 评论(0) 推荐(0)
摘要:1.运行时动态库的搜索路径方法一:在配置文件/etc/ld.so.conf中指定动态库搜索路径方法二:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)方法三:在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径.这是通过gcc 的参数"-Wl,-rpath,"指定(如例3所示).当指定多个动态库搜索路径时,路径之间用冒号":"分隔)四:默认的动态库搜索路径/lib五:默认的动态库搜索路径/usr/lib 动态库的搜索 阅读全文
posted @ 2012-10-16 13:07 mugua250 阅读(756) 评论(0) 推荐(0)
摘要:引用自:http://www.ibm.com/developerworks/cn/linux/sdk/dll/index.html#7为 Linux 应用程序编写 DLL在仅仅只会编写插件的时候为什么要编写整个应用程序?Allen Wilson (wilsona@us.ibm.com), 电子商务设计师, IBM简介:插件和 DLL 通常是用来无须编写整个新应用程序而添加功能的极好方法。在 Linux 中,插件和 DLL 是以动态库形式实现的。电子商务顾问兼设计师 Allen Wilson 介绍了动态库,并且向您演示了如何在某一个应用程序正在运行之后使用动态库来更改该应用程序。发布日期:200 阅读全文
posted @ 2012-10-06 17:11 mugua250 阅读(201) 评论(0) 推荐(0)
摘要:引用自:http://www.cnblogs.com/leaven/archive/2010/04/21/1717027.htmlconst char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 char * const cp; ( * 读成 pointer to ) cp is a const pointer to char const char * p; 阅读全文
posted @ 2012-10-06 14:17 mugua250 阅读(248) 评论(0) 推荐(0)
摘要:转载自:http://blog.csdn.net/historyasamirror/article/details/5778378当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link。写完之后发现很多人都很喜欢,我还是非常开心的,也说明这个问题确实困扰了很多人。随着学习的深入,渐渐的感觉原来的理解有些偏差,但是还是没引起自己的重视,觉着都是一些小错误,无伤大雅。直到有位博友问了一个问题,我重新查阅了一些更权威的资料,才发现原来的文章中有很大的 阅读全文
posted @ 2012-09-26 19:11 mugua250 阅读(154) 评论(0) 推荐(0)
摘要:Linux上安装使用boost入门指导获得boostboost分布只需要头文件的库使用boost建立一个简单的程序准备使用boost二进制文件库把你的程序链接到boost库1.获得boost下载boost_1_46_1.tar.bz2解压2.boost分布boost_1_46_1.........................boost根目录 boost/.....................................所有boost头文件 libs/........................................Tests,.cpps,docs等的库文件注意: .. 阅读全文
posted @ 2012-09-26 14:58 mugua250 阅读(276) 评论(0) 推荐(0)
摘要:MTU是Maximum Transmission Unit的缩写。意思是网络上传送的最大数据包。MTU的单位是字节。 大部分网络设备都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢包。linux MTU调整1、找到服务器的MTU值使用netstat -i 来查看MTU的值[root@asterisk ~]# netstat -i Kernel Interface tableIface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-. 阅读全文
posted @ 2012-09-25 19:25 mugua250 阅读(1699) 评论(0) 推荐(0)
摘要:介绍 Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等等… 好在我已经将这些事完成了,我将和所有人共享我的知识了。如果你了解 C 语言并想穿过网络编程的沼泽,那么你来对地方了。读者对象 这个文档是一个指南,而不是参考书。如果你刚开始 socket 编程并想找一本入门书,那么你是我的读者。但这不是一本完全的 socket 编程书。平台和编译器 这篇文档中的大多数代码都在 Linux 平台PC 上用 GNU 的 gcc 成功编译过。而且它们在 H... 阅读全文
posted @ 2012-09-25 19:21 mugua250 阅读(1239) 评论(0) 推荐(2)
摘要:一、初始化输入gdb进入gdb调试环境。或者直接输入gdb + progfile来加载文件。注意该文件是使用gcc(或g++)编译得到的。为了使 gdb 正常工作, 必须使你的程序在编译时包含调试信息,编译时必须使用-g参数来。或者进入gdb环境后,通过命令file + progfile来加载需要调试的可执行文件文件。查看源代码:list [函数名][行数]设置程序运行参数:set args二、暂停程序 gdb可以使用几种方式来暂停程序:断点,观察点,捕捉点,信号,线程停止。当程序被暂停后,可以使用continue、next、step来继续执行程序。continue 执行到下一暂停点或程序.. 阅读全文
posted @ 2012-09-05 14:36 mugua250 阅读(382) 评论(0) 推荐(0)
摘要:引用自:http://www.cnblogs.com/Kane_zzt/archive/2008/08/14/1267877.html1,前言无数次听到“我要开始学习C++!”的呐喊,无数次听到“C++太复杂了,我真的学不会”的无奈。Stan Lippman先生曾在《C++ Primer》一书中指出“C++是最为难学的高级程序设计语言之一”,人们常将“之一”去掉以表达自己对C++的敬畏。诚然,C++程序设计语言对于学习者的确有很多难以逾越的鸿沟,体系结构的庞大,应接不暇并不断扩充的特性……除此之外,参考资料之多与冗杂使它的学习者望而却步,欲求深入者苦不堪言。希望这一份不完全导引能够成为您C++ 阅读全文
posted @ 2012-05-25 10:56 mugua250 阅读(269) 评论(0) 推荐(0)
摘要:sprintf() 格式化输出函数功能: 函数sprintf()用来作格式化的输出。用法: 此函数调用方式为int sprintf(char *string,char *format,arg_list);说明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用 outtextxy()函数将串里的字符显示在屏幕上。arg_list为参数表,可有不定个数。通常在绘图方式下输出数字时可调用sprintf()函数将所要输出的格式送到第一个参数,然后显示输出。程序例:#include <stdio.h> 阅读全文
posted @ 2012-05-25 10:51 mugua250 阅读(428) 评论(0) 推荐(0)
摘要:引用自:http://www.cnblogs.com/Kane_zzt/archive/2009/04/23/1442387.html本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)1.概念在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大 阅读全文
posted @ 2012-05-25 10:50 mugua250 阅读(175) 评论(0) 推荐(0)
摘要:1. 宏指令:#define #error #import #undef #elif #if #include #else #ifdef #line #endif #ifndef #pragma2.#define#define WIDTH 80#define LENGTH (WIDTH+10)#define test(f1,f2) (f1*f2)3.#error#error 语言符号字符串采用error指令可产生编译错误信息#if !defined(NUM_TEN)#error ten is not defined.#endif当遇到#error指令时,编译终止3.#if,#elif,#els 阅读全文
posted @ 2012-05-25 10:45 mugua250 阅读(231) 评论(0) 推荐(0)