C/C++
文章平均质量分 55
fibbery
心无杂念,快乐前行!
展开
-
rename函数的用法
rename(更改文件名称或位置) 相关函数 link,unlink,symlink表头文件 #include定义函数 int rename(const char * oldpath,const char * newpath);函数说明 rename()会将参数oldpath 所指定的文件名称改为参数newpath所指的文件名称。若newpath所指定的文件已存在,则会被删除。返回原创 2007-11-08 15:19:00 · 17622 阅读 · 3 评论 -
-1真的比1小吗?
-1真的比1小吗?看到这篇博客的朋友,此时在想什么?不妨把现在所想写出来。-1比1小,小学生都知道。但是在今天编程的时候,我发现了一个让我耗费了几个小时才搞清楚的事情。事情是这样的。class A,有一个unsigned int GetLength()方法,class B同样有一个unsigned int GetLength()方法。依据A、B创建a、b实例。char * buff1和char * buff2,buff1-buff2=-1,也就是buff2指向的地址比buff1指向的地址高一个字节。程序中,原创 2010-07-02 16:07:00 · 748 阅读 · 0 评论 -
局部静态变量的初始化与异常
编程的过程中,思考了一个问题。当一个局部的静态变量使用一个函数的返回值初始化时,如果该函数抛出异常,那么,局部静态变量是否被定义成功,即,如果再次调用包含局部静态变量的函数,抛出异常的函数会不会再次被调用。原创 2011-03-26 22:34:00 · 4024 阅读 · 0 评论 -
【转】C++异常中的堆栈跟踪
C++异常中的堆栈跟踪C++语言的运行时环境是基于栈的环境,堆栈跟踪(trace stack)就是程序运行时能够跟踪并打印所调用的函数、变量及返回地址等,C++异常中的堆栈跟踪就是当程序抛出异常时,能够把导致抛出异常的语句所在的文件名和行号打印出来,以及把调用抛出异常的语句的函数以及其它上层函数信息都打印出来。1. 为什么需要堆栈跟踪 当你在开发程序时,你是否曾遇到过程转载 2012-11-26 09:57:09 · 2312 阅读 · 0 评论 -
如何识别代码是否被inline了?
本文作为帖子《如何知道一个函数在编译后是否被inline了? [》的总结,写入我的学习笔记博客,供需要的人包括自己查阅(好记性不如烂笔头子)。要知道函数是否被inline,首先要打开编译器的inline功能,其次,要生成汇编代码,查看调用该函数的地方是否被inline。当然,如果在汇编中被inline那么在编译后的程序中一定是inline的;如果汇编中没有被inline,也不能说明函数不会在l原创 2013-01-15 12:52:35 · 1188 阅读 · 0 评论 -
关于模版函数的全特化
在类中有一个模版函数,只有一个参数类型,对其进行特化时遇到了一点小麻烦,为了能够帮助更多人解决问题以及作为自己的学习笔记,把解决的整个过程记录下来。 object.hclass CObject{public: template int func() { return sizeof(T); } //假设对于int类型func函数原创 2013-01-21 18:21:25 · 1166 阅读 · 0 评论 -
命名空间与友元函数
定义流IO的友元函数很常见,但随着项目变大,一般都将将类定义在某命名空间内,这时,我们在该类中定义的友元函数和命名空间是什么关系?如果该友元函数在类的cpp文件中实现,是放在命名空间内还是放在命名空间外?另外,对于该实现的函数,是否还需要给出函数声明?也就是说,friend能否承担声明友元函数的责任?头文件:#include namespace ns_test{/*原创 2014-02-11 15:31:30 · 2834 阅读 · 8 评论 -
ZeroMQ的编译安装
操作系统我使用的操作系统是Ubuntu17.10 desktop,由于是桌面版,所以默认情况下系统会缺少一些依赖包,详细见下文。ZeroMQ源码从ZeroMQ官方网站下载源代码,本文使用的是zeromq-4.2.3.tar.gz。安装步骤安装依赖包: sudo apt-get install g++ sudo apt-get install autoconf sudo a...原创 2018-01-07 22:33:35 · 1262 阅读 · 0 评论 -
C++开源库大全
原文地址:C++开源库大全标准库C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Template Library:标准模板库C POSIX library : POSIX系统的C标准库规范ISO C++ Standards Committee :C++标准委员会框架C++通用框架转载 2018-01-17 10:54:43 · 405 阅读 · 0 评论 -
【问题】CMake was unable to find a build program corresponding to "Ninja".
背景描述使用eclipse导入了一个CMake的C++项目,项目本身是完整可编译的,即,在命令行下使用cmake、make最终可以编译出目标文件。但是,导入eclipse之后,无法进行编译,报错信息为:CMake was unable to find a build program corresponding to "Ninja".我使用的操作系统是ubuntu16.04.5。探索过程...原创 2018-12-21 17:49:29 · 15925 阅读 · 1 评论 -
学习C/C++之路——提高中国软件水平从我做起
本文最早出处在我回答网友提问的帖子《为何我国"C"技术如此落后?》中的39楼。希望我的这篇文章能够给即将学习和已经学习C/C++以及从事软件编程的朋友们一点启发和帮助。--------------------------------既然称之为语言,那么,C/C++也具有和人类语言一样的特性,都是使用符号来描述要表达的事物。 人们在写作文的时候,有人写得非常耐人欣赏,有人写得不知所云。这里面原创 2009-07-12 16:40:00 · 1539 阅读 · 1 评论 -
C++实现tail的方法(还不完善)
基本思想是,从文件末尾向前Seek N个字符,读入内存,如果达到了tail n行则读取结束,如果不够n行再从文件末尾向前Seek N+N*2^1个字符,并读取N*2^1个字符,加上之前的行数,如果还不够tail n行,继续直到N+N*2^1+...+N*2^m以满足tail n为止。 #include iostream>#include fstream>#include string>原创 2009-07-30 14:08:00 · 3077 阅读 · 0 评论 -
系统移植:获得进程id
c函数库中提供了获得进程id的函数。在unix中使用pid_t getpid()函数,包含在unistd.h中。VC为了兼容性也提供了获得进程id的函数(当然有多种方法),但是略有不同。int _getpid( void );包含在process.h中。该函数没有定义任何错误,也就是无论如何都能获得自己的进程id。如果在程序中要获得进程的id,那么最简单的办法就是使用getpid/_get原创 2007-12-11 16:52:00 · 1215 阅读 · 0 评论 -
The size of base data type in Ubuntu-AMD64
都说64位操作系统中的sizeof(int)应该等于8,即8字节,我特意在我的64位AMD CPU的本本上装了一个64位Ubuntu操作系统,当然不完全是为了测试sizeof(int)。可测试结果让我出乎意料,sizeof(int)=4;sizeof(long)=8;我找了g++编译器的选项,但是没有找到能够将sizeof(int)编译成64位的,-mint64被认作不能识别的命令。虽然-m64可原创 2008-04-30 10:30:00 · 1935 阅读 · 0 评论 -
[转]VC编译选项
优化 /O1 最小化空间 minimize space /Op[-] 改善浮点数一致性 improve floating-pt consistency /O2 最大化速度 maximize speed /Os 优选代码空间 favor code space /Oa 假设没有别名 assume no aliasing /Ot 优选代码速度 favor code转载 2008-07-21 10:59:00 · 644 阅读 · 0 评论 -
将8进制字符串转换为整数的代码
#include inline bool IsOctNum(char c){ return !(c0||c>8);}inline int OctToDec(const char * oct_str){ int len=strlen(oct_str); int rtn=IsOctNum(oct_str[0])?oct_str原创 2008-08-29 17:05:00 · 925 阅读 · 0 评论 -
在使用STL容器时避免使用具有复杂拷贝构造函数的类
在使用STL容器时避免使用具有复杂拷贝构造函数的类。在向STL容器插入一个对象时,容器类会调用插入类的拷贝构造函数,如果插入类的拷贝构造函数很复杂,则将直接影响效率。 那么何谓复杂呢?比如,进行大量内存的拷贝,大量耗时的运算,等等,其实质就是需要做很多工作,需使用很多资源!如下例子说明了,即使CTest类定义了从int类型变量构造的方法,但同样在STL容器中调用拷贝构造函数。#i原创 2008-08-29 17:36:00 · 1487 阅读 · 0 评论 -
将 Win32 C/C++ 应用程序迁移到 POWER 上的 Linux
将 Win32 C/C++ 应用程序迁移到 POWER 上的 Linux,第 3 部分: 信号文档选项<!--document.write(打印本页);//-->打印本页<!--document.write(将此页作为电子邮件发转载 2008-09-03 19:34:00 · 1152 阅读 · 0 评论 -
VC中如何编译无Console窗口的Console程序
评论: Kelvin_UV:为什么不直接用Win32 Application呢, 既然控制台程序不要命令行窗口, 又为什么用控制台程序呢?(发表于2004-9-11 21:28:00) hangwire:有时需要用控制台程序做一些没有用户交互的后台批量处理,不想显示命令行窗口。(发表于2004-9-11 22:35:00) Kelvin_UV:不明转载 2008-09-28 14:23:00 · 2428 阅读 · 0 评论 -
float和double类型的内存分布和比较方法
文章出处:http://www.diybl.com/course/3_program/c++/cppsl/2008629/129103_2.html C/C++的浮点数据类型有float和double两种。 类型float大小为4字节,即32位,内存中的存储方式如下: 符号位(1 bit) 指数(8 bit) 尾数(23 bit) 类型double大小为8字节转载 2008-10-07 14:13:00 · 1535 阅读 · 0 评论 -
数字转换成金额大写的小程序
自己编写的一段程序,与大家 共享一下,如果转载请注明出处。同时欢迎指教。 #include #include #include int main(int argc, char * argv[]){ std::string bits[]={"元","十","百","千","万","十","百","千","亿","十","百","千","兆","十",原创 2008-11-11 13:36:00 · 2216 阅读 · 21 评论 -
交换网络中的嗅探和ARP欺骗
交换网络中的嗅探和ARP欺骗创建时间:2002-04-11文章属性:原创文章来源:www.opengram.com文章提交:refdom (refdom_at_263.net)Author: Refdom Email: refdom@263.netHomePage: http://www.opengram.com2002-4-6 以太网内的嗅探(sniff)对于网络安全来说并不是什么好事转载 2009-01-19 10:41:00 · 2286 阅读 · 0 评论 -
OCI Programming Basics
Skip HeadersOracle® Call Interface Programmers Guide,10g Release 2 (10.2)Part Number B14250-02HomeBook ListContentsIndexMaster IndexContact Us转载 2009-02-03 10:57:00 · 3343 阅读 · 0 评论 -
整数转换成16进制字符串的程序
#include #include char * itoa_hex(unsigned int data,char * hbuff){ unsigned char * p=(unsigned char *)(&data); int len=sizeof(data); static const char hex_map[]="012原创 2008-12-23 11:32:00 · 1780 阅读 · 1 评论 -
C/C++运算符优先级列表
c语言的操作符共有15个优先级,如下:Operators Associativity () [] -> . left to right! ~ ++ -- + - * (type) sizeof right to left* / % left to right+ - left to right> left to right >= lef转载 2008-02-28 17:13:00 · 5567 阅读 · 2 评论