随笔分类 -  C/C++

摘要:1. 引入inline关键字的原因 在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。 栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。 在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序 阅读全文
posted @ 2017-02-21 14:19 Boblim 阅读(97244) 评论(5) 推荐(42)
摘要:在编译程序是出现了如下错误, 类或结构体的前向声明只能用来定义指针对象或引用,因为编译到这里时还没有发现定义,不知道该类或者结构的内部成员,没有办法具体的构造一个对象,所以会报错。 将类成员改成指针就好了。 程序中使用incomplete type实现前置声明有助与实现数据的隐藏。要求调用对象的程序 阅读全文
posted @ 2017-02-17 10:41 Boblim 阅读(25500) 评论(0) 推荐(1)
摘要:_vsnprintf,C语言库函数之一,属于可变参数。用于向字符串中打印数据、数据格式用户自定义。 函数简介 编辑 函数简介 头文件: #include <stdarg.h> 函数声明: int _vsnprintf(char* str, size_t size, const char* forma 阅读全文
posted @ 2017-02-15 16:07 Boblim 阅读(5071) 评论(0) 推荐(0)
摘要:最近,遇到一个c语言的不定参数问题。其实,对于c语言的不定参数问题,只需要三个函数就可以搞定了。这三个函数的头文件是<stdarg.h>,其实下面的三个函数都是一个宏定义(macro)。 这三个函数是: void va_start(va_list ap, last); type va_arg(va_ 阅读全文
posted @ 2017-02-15 16:04 Boblim 阅读(5205) 评论(0) 推荐(1)
摘要:在初学C的时候,我们都会用到printf函数来写Hello World的程序.在我们看printf函数的声明时,会看到类似于下面代码 另外,在我们学习C和C++的时候,函数的声明总是确定个数和类型的,而我们在用printf的时候,却可以一次输出多个参数. 这就是我们要提的不定参数了. 在32位的C和 阅读全文
posted @ 2017-02-15 16:03 Boblim 阅读(5422) 评论(0) 推荐(0)
摘要:转自:http://blog.csdn.net/hazir/article/details/38600419 今天下午遇到一个头文件相互包含而导致的编译问题,花了我不少时间去调试没找到问题,最后晚上跟师兄讨论不少时间,突然有所顿悟! 问题重现 我把问题脱离于项目简单描述一下:我写了一个函数 bool 阅读全文
posted @ 2017-02-15 08:28 Boblim 阅读(5070) 评论(0) 推荐(0)
摘要:makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还 阅读全文
posted @ 2017-02-13 17:31 Boblim 阅读(980) 评论(0) 推荐(0)
摘要:一.前言 1.编译器优化介绍: 由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软 阅读全文
posted @ 2017-02-09 09:46 Boblim 阅读(1015) 评论(0) 推荐(0)
摘要:字符数组转化成string类型char ch [] = "ABCDEFG";string str(ch);//也可string str = ch;或者char ch [] = "ABCDEFG";string str;str = ch;//在原有基础上添加可以用str += ch;将string类型 阅读全文
posted @ 2017-02-06 10:01 Boblim 阅读(149020) 评论(0) 推荐(13)
摘要:1)是用Vector容器代替数组 2)使用数组指针(需要注意局部变量的问题,指针是否需要用new创建) int red [ 3 ] = { 1 , 0 , 0 }; int green [ 3 ] = { 0 , 1 , 0 }; int blue [ 3 ] = { 0 ,&# 阅读全文
posted @ 2017-02-06 10:00 Boblim 阅读(15693) 评论(0) 推荐(1)
摘要:用了C和C++这么久,今天才仔细研究了下typedef的用法,真的是惭愧啊,不过基础都是不断巩固的啊。 typedef 在计算机编程语言中用来为复杂的声明定义简单的别名,与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能 阅读全文
posted @ 2016-10-22 11:21 Boblim 阅读(1475) 评论(0) 推荐(0)
摘要:代码(可以把clock_gettime换成time(NULL)) 分析: clock_gettime() 函数"clock_gettime"是基于Linux C语言的时间函数,他可以用于计算精度和纳秒。 语法: #include<time.h> int clock_gettime(clockid_t 阅读全文
posted @ 2016-10-21 19:22 Boblim 阅读(110670) 评论(0) 推荐(3)
摘要:在程序开发过程中,我们时不时要用到一些定时器,通常如果时间精度要求不高,可以使用sleep,uslepp函数让进程睡眠一段时间来实现定时, 前者单位为秒(s),后者为微妙(us);但有时候我们又不想让进程睡眠阻塞在哪儿,我们需要进程正常执行,当到达规定的时间时再去执行相应的操作, 在linux下面我 阅读全文
posted @ 2016-10-21 15:39 Boblim 阅读(14774) 评论(0) 推荐(1)
摘要:strncpy 是 C语言的库函数之一,来自 C语言标准库,定义于 string.h,char *strncpy(char *dest, const char *src, int n),把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回dest。 格式 函数原型c 阅读全文
posted @ 2016-10-15 13:57 Boblim 阅读(21428) 评论(0) 推荐(0)
摘要:strtok()这个函数大家都应该碰到过,但好像总有些问题, 这里着重讲下它 首先看下MSDN上的解释: char *strtok( char *strToken, const char *strDelimit ); Parameters strToken String containing tok 阅读全文
posted @ 2016-10-15 10:57 Boblim 阅读(2776) 评论(0) 推荐(1)
摘要:ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器(<<) 向流输出数据。比如说系统有一个默认的标准输 阅读全文
posted @ 2016-10-14 14:03 Boblim 阅读(20075) 评论(0) 推荐(0)
摘要:一台机器上可能不只有一个网卡,但每一个网卡只有一个MAC地址,而每一个网卡可能配置有多个IP地址;如平常的笔记本电脑中,就会有无线网卡和有线网卡(网线接口)两种;因此,如果要获得本机所有网卡的IP和MAC地址信息,则必须顺序获得每个网卡,再依次获取其信息等;在windows sdk中,用IP_ADA 阅读全文
posted @ 2016-10-09 14:37 Boblim 阅读(8577) 评论(0) 推荐(0)
摘要:默认参数是存在于函数的声明中,还是函数的定义中呢? 我在VS6.0和VS2008下做了如下实验,并做出了简单的总结,有不足或者不准确的地方,欢迎大家拍砖,我会及时修正相关内容。 实验一:默认参数不能同时存在于函数声明和函数定义中。 #include #include using namespace std; void SetHeight(double dHeight =... 阅读全文
posted @ 2016-09-22 19:10 Boblim 阅读(5488) 评论(0) 推荐(1)
摘要:在最近的项目里,由于我想重载结构体的==操作符,然而大意的我把重载的过程写在了头文件里,所以导致了multiple definition of的错误。现在总结下解决方法: 首先,最关键的,不要把全局变量以及全局方法的定义放在头文件里!!!! 1.给每一个头文件加上条件编译:注:此方法不是解决上述问题 阅读全文
posted @ 2016-09-20 19:15 Boblim 阅读(40501) 评论(1) 推荐(4)
摘要:SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本。 Subversion是什么? 它是一个自由/开源的版本控制系统,一组文件存放在中心版本库,记录每一次文件和目录的修改,Subver 阅读全文
posted @ 2016-09-09 08:53 Boblim 阅读(1032) 评论(0) 推荐(0)