随笔分类 - C/C++
摘要:我是在IOS上用GDB编译,也是包如下错误,参考这边文章以后就OK了把我得#include "deque.h" 改成#include <deque>, warning消失以下为转载内容:版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://jadue.blogbus.com/logs/31168910.html用DEV-C++编译是总是有警告:32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least
阅读全文
摘要:11.1使用const提高函数的健壮性看到const关键字,C++程序员首先想到的可能是const常量。这可不是良好的条件反射。如果只知道用const定义常量,那么相当于把火药仅用于制作鞭炮。const更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书籍建议:“Use const whenever you need”。11.1.1 用const修饰函数的参数如果参数作输出用,不论它是什么数据类型,也不论它采用“指针传递”还是“引
阅读全文
摘要:引用和指针到底该啥时候用哪一个,一直是各有利弊的问题,不过这次我是被引用郁闷死了。足足花了我一天时间,都没找出bug出在哪里,最后没办法,请同事帮忙看终于搞定了,原来是个引用的用法问题。 正常代码如下: UserSetting& user = g_Setting.User();User()函数返回的是一个引用,这样直接用肯定没问题,问题是我有一个地方写错了,写成UserSetting user = g_Setting.User(); 结果导致当时结果是正确的,过后就挂了,很是让我郁闷,悲惨的又一次经历,和以前那个abs宏多次计算出现的错一样,同样耗时一天,不同的是上次自己慢慢调试出来的
阅读全文
摘要:fstream 与ofstreamofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器(<<) 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<'/n';就表示把字符串"Write Stdout"和换行字符('/n
阅读全文
摘要:www.diybl.com 时间:2009-04-12 作者:匿名 编辑:sky初识Visual Leak Detector灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题。内存泄漏是最常见的内存问题之一。内存泄漏如果不是很严重,在短时间内对程序不会有太大的影响,这也使得内存泄漏问题有很强的隐蔽性,不容易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的,从性能下降到内存耗尽,甚至会影响到其他程序的正常运行。另外内存问题的一个共同特点是,内存问题本身并不会有很明显的现象,当有异
阅读全文
摘要:该批处理的初衷是为了让公司非程序员可以不通过VC工程,直接运行批处理文件而编译运行程序。一,其实很简单,首先需要安装VC,没有正式版,安装免费的Express版本也行。 然后写个批处理,内容如下。REM VC目录中2008是9.0,2005是8,其他的自己到C:/Program Files去找下VC安装路径CALL "C:/Program Files/Microsoft Visual Studio 9.0/VC/vcvarsall.bat"REM “/xxx.vcproj” 是工程名字,包含路径,或者可能是.slnREM “defaultbuild_d|Win32”是工程的
阅读全文
摘要:通常我们会用用vc新建一个win32 console(控制台) 工程来进行一些简单的C++语法调试,但是这样的工程按F5运行的话,command(输出)窗口会一闪而过,无法看到输出这时候我们有2种办发来解决它。 1, ctrl+F5 运行,但是老容易鼠标按成直接启动 2,main 函数最后加一条语句,这样按F5运行也OK了。 system("pause");
阅读全文
摘要:包含以下函数:char * lm_strchr(const char *str, char c);char * lm_strstr(const char *s1, const char *s2);char * lm_strstr2(const char *s1, const char *s2);char * lm_strchr(const char *str, char c){ do{ if(*str == c) return (char *)str; }while(*str++); return NULL;}char * lm_strstr(const char *s1, const cha
阅读全文
摘要:包含以下函数: //字符串查找将在下篇文章详细说明size_t lm_strlen(const char *str);size_t lm_strlen2(const char *str);char * lm_strcpy(char *dest, const char *src);char * lm_strncpy(char *dest, const char *src, size_t n);char * lm_strncpy2(char *dest, const char *src, size_t n);char * lm_strcat (char *dest, const char *src
阅读全文
摘要:警惕递归 递归是一种解决复杂问题的有效算法,函数通过简化问题求解过程,将被简化的问题再交给一个或多个与自己完成一样的函数,从而让程序解决这个问题。比如说汉诺塔问题。 递归算法思路清晰,编成代码简单优美,缺点是会消耗不少的栈空间,甚至有时候会带来额外的开销。递归所对应的另一种算法是迭代(也就是循环),相应的,迭代的优点是效率高,但是程序可读性方面没有递归好。大部分递归都可以方便的用迭代来取代,因此我建议如果递归不是很复杂,还是用循环来替代。 我们用最简单常见的阶乘算法和斐波纳契数列来说明:阶乘递归程序:long factorial(int n){static int time = 0; //fo
阅读全文
摘要:来源:21ICbbs 作者:lhf C语言测试:想成为嵌入式程序员应知道的0x10个基本问题 其中少量灰色的文字是我添加的,表达一些我的看法,很不成熟,希望朋友们指正。 C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这个愚蠢的问题吗?如要你答出某个字符的ASCII值。这些问题着重考察你的系统调用和内
阅读全文
摘要:当宏参数在宏定义中出现超过一次,这个宏作用在复杂的表达式里就可能出错,导致不可预料的结果,我还记得我有一次为这个问题导致的出错,查了一个星期,最后整整debug了一个工作日才找到这个问题,所以提醒大家一定要小心。 比如 #define MAX(a, b) ( (a) > (b) ? (a) : (b) ) #define ABS(x) ( (x) > 0 ? (x) : (-x) )定义 int j = 5, k =8;正常情况: MAX(j, k); ABS(j, k) 都OK, 但是下面这种情况呢?MAX(j++, k++); ABS(j++); 如果无意中在代码里出现上面这种
阅读全文
摘要:func( Type para1, Type para2, Type para3, ... ){ /****** Step 1 ******/ va_list ap; va_start( ap, para3 ); //一定要“...”之前的那个参数 /****** Step 2 ******/ //此时ap指向第一个可变参数 //调用va_arg取得里面的值 Type xx = va_arg( ap, Type ); //Type一定要相同,如: //char *p = va_arg( ap, char *); //int i = va_arg( ap, int ); //如果有多个参...
阅读全文
摘要:const_iterator 与 const iteratorconst_iterator:C++为每种容器类型定义了一种名为const_iterator的类型,该类型只能用于读取容器内的元素,但不能改变其值。对const_iterator类型解引用,得到的是一个指向const对象的引用。 for (vector<string>::const_iterator iter = text.begin(); iter != text.end(); ++ iter){ cout << *iter << endl; //ok: print each element i
阅读全文
摘要:static大概用法1. 在函数中定义局部变量:在变量被存储在静态存储去,下次调用该函数时变量值保持不变2. 定义函数和全局变量:作用域仅在该文件中,防止和其他文件中同名函数/变量产生冲突In C++3. 类成员变量:类共享数据成员,无论创建多少个类的对象,该变量在程序中只有一份,而且是全局性的。注意:必须在类定义体的外部定义(正好一次),通常和类成员函数定义在一个文件中。4. 类成员函数:只能访问类里面的static成员变量。无法通过this指针访问,因此也不能被声明为虚函数。注:static成员不是类对象的组成部分。有待补充
阅读全文

浙公网安备 33010602011771号