c++语言
文章平均质量分 77
David_xtd
这个作者很懒,什么都没留下…
展开
-
undefined reference to `SetPduPowerConsumptionCnt'的解决办法
问题:程序模型用C++语言编写,在程序模型和调用函数之间添加了一个接口文件modelc.cpp,用来让用c语言程序调用程序模型中的函数;新添加了两个函数setPduPowerConsumptionCnt()和setPduPowerConsumptionTot(),用来清除PDU模型中的总功耗和功耗计数器;编译时出现错误提示:dingq@wd-u1110:~/hwsvn/2sw/原创 2012-10-30 13:30:33 · 1051 阅读 · 0 评论 -
C++函数重载详解
我们在开瓶瓶罐罐的时候,经常会遭遇因各种瓶口规格不同而找不到合适的工具的尴尬。所以有时候就为了开个瓶,家里要备多种规格的开瓶器。同样是开个瓶子嘛,何必这么麻烦?于是有人发明了多功能开瓶器,不管啤酒瓶汽水瓶还是软木塞的红酒瓶都能轻松打开。然而开瓶器的问题也会发生到程序设计中。比如我们要编写一个函数来求一个数的绝对值,然而整数、浮点型数、双精度型数都有绝对值,但为它们编写的函数返回值类型却是各转载 2013-07-22 17:37:34 · 1023 阅读 · 0 评论 -
C语言中time函数获取系统时间
可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算。其原型为:time_t time(time_t * t);如果你已经声明了参数t,你可以从参数t返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970年1月1日0时0分0秒)到现在此时的秒数。如果参数为空(N转载 2013-07-24 17:29:35 · 1695 阅读 · 0 评论 -
常用调试工具gdb,dbx,valgrind介绍一
类UNIX下C/C++开发,代码调试比较麻烦,最原始的加跟踪调试很土,也很费时,特别是一个庞大的项目,代码行数非常大的时候调试起来非常费劲,当core dump时定位也不容易,这里介绍几个常用工具: gdb、dbx调试工具,valgrind内存检查工具(Linux) 。gdb(GNU DeBugger)是GNU的调试器,一般和gcc配搭使用。要使用GDB进行调试,编译程序时要指定-g或-ggd转载 2013-07-19 10:45:49 · 1717 阅读 · 0 评论 -
编译错误:error: default argument given for parameter 1 of ‘’ [-fpermissive]
问题:编译时出现错误提示如下:u1204@u1204-zhw:~/hwsvn/2sw/4prj_mips/UCP_rt5350/src/trunk$ makeg++ -g3 -Wall -o0 -c ini_file.cpp -o ini_file.oini_file.cpp:17:117: error: default argument given for parameter 1 o原创 2013-08-01 16:47:37 · 27026 阅读 · 2 评论 -
常见C/C++ XML解析器比较
常见C/C++ XML解析器有tinyxml、XERCES、squashxml、xmlite、pugxml、libxml等等,这些解析器有些是支持多语言的,有些只是单纯C/C++的。如果你是第一次接触到XML解析,那么关于XML解析器的选择问题的确令人头疼,我们先看一下这些解析器有哪些特点。一、Xerces XML解析器官方网址:http://xerces.apache.org/x转载 2013-08-05 14:53:14 · 21286 阅读 · 0 评论 -
安装codeblocks nightly build版本并更新color scheme
问题:使用环境:Ubuntu 12.04,利用本身的software center安装的codeblocks版本为10.05;发现其color scheme只有一个单一的default,而且是白背景;发现最新的版本为12.11,想体验一下新版本的新特性。所以,选择安装nightly build的12.11版本;解决办法:1. 首先通过ubuntu 12.04的softwar原创 2013-08-09 13:41:26 · 2760 阅读 · 0 评论 -
应用 Valgrind 发现 Linux 程序的内存问题
简介: 如何定位应用程序开发中的内存问题,一直是 inux 应用程序开发中的瓶颈所在。有一款非常优秀的 linux 下开源的内存问题检测工具:valgrind,能够极大的帮助你解决上述问题。掌握 valgrind 的使用以及工作原理,能够有效地定位进而避免应用开发中的内存问题。Valgrind概述体系结构Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调转载 2013-08-12 11:32:45 · 988 阅读 · 0 评论 -
对堆和栈区别做了很全面的分析
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(s转载 2013-08-28 10:09:42 · 1102 阅读 · 0 评论 -
内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区[
一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放转载 2013-08-28 10:30:10 · 2366 阅读 · 0 评论 -
Linux下C++的通用Makefile与解析
本文给出万能Makefile的具体实现,以及对其中的关键点进行解析。所谓C++万能Makefile,即可编译链接所有的C++程序,而只需作很少的修改。号称万能Makefile,一统江湖。我对原版的Makefile做了些修改。首先揭开它的庐山真面目:##################################################### Generic makef转载 2013-09-23 17:14:35 · 3853 阅读 · 0 评论 -
使用#if defined()组成复杂的预编译控制指令
问题描述:想使用互斥的宏定义控制源代码中该编译哪一段代码,该如何使用预编译伪指令来控制呢?比如,对于通用型的源码来说,为了适应不同的设备配置,需要使用不同的配置文件,对于combo,使用cfg_file = "/usr/local/combo.ini";对于pdu,使用cfg_file = "/usr/local/pdu.ini";解决办法:1. 综合运用#if、#defi原创 2013-10-12 17:49:30 · 3366 阅读 · 0 评论 -
c语言中字符串比较易错的地方
问题:源代码由C++代码转化而来,所以对于C风格字符串的比较,仍然使用C++中比较C风格字符串的方式char* pstr = "enable";if (pstr == "enable") { PerformTask();}但在程序运行的时候,发现PerformTask()始终没有被调用到。解决办法:1. 在C++中,问题中所用的字符串比较方式是可行的。原创 2013-11-09 11:00:28 · 13391 阅读 · 3 评论 -
如何将C++改为C
我曾参与过公司的bpp项目,就是bluetooth print profile。由于使用了hpijs的开源包,但是是C++的。由于C++解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间,降低成本,同时也为了提高效率,将用C++语言写的源程序用C语言改写是很有必要的。 C++与C区别最大的就是C++中的类的概念和特性,将C++改为C的问题,就转换成如何将转载 2013-12-07 15:25:14 · 15444 阅读 · 3 评论 -
error: passing xxx as 'this' argument of xxx discards qualifiers的解决办法
问题:解决办法:原创 2014-06-05 16:21:47 · 22101 阅读 · 0 评论 -
VS2010错误“LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”解决办法
问题:解决办法:原创 2014-06-28 15:22:45 · 14151 阅读 · 6 评论 -
排序算法_C++11的实现
近来在学习>和C++11,按自己的理解自己动手实现排序算法的实现,代码中多用C++11的新特性。 这算是自娱自乐吧这里只考虑排序的对象的有move构造函数,move赋值函数。[cpp] view plaincopy#ifndef YYRSort_H_ #define YYRSort_H_转载 2014-07-14 09:34:55 · 1056 阅读 · 0 评论 -
C++中的struct
问题:C语言中有struct自定义结构体类型;C++中也有struct类型,而且,与C++中面向对象主要的数据类型class还极为相似。那么,C++中struct和class之间有什么区别,什么情况下使用struct呢?解决办法:从C++语言设计者Bjarne Stroustrup的大作《C++编程语言(特别版)》中归纳C++中struct和class的区别,有以下几点:原创 2013-07-06 16:00:35 · 5957 阅读 · 0 评论 -
解决编译warning:warning: ‘MeteringUnit::voltage_gain_’ will be initialized after [-Wreorder]
问题:环境:ubuntu 12.04,g++版本4.6.3,编译目标文件时出现warnings:u1204@u1204-zhw:~/hwsvn/2sw/4prj_mips/UCP_rt5350/src/trunk$ make clean;makerm -f *.o local_ctrlg++ -g3 -Wall -o0 -c msgrcv_cmd.cpp -o msgrcv_cmd.o原创 2013-07-20 17:25:49 · 5724 阅读 · 0 评论 -
关于Windows与Linux下32位与64位开发中的数据类型长度的一点汇总
32位与64位的数据类型长度是不一样的,而且windows和linux也有些许区别,下面把64位下的数据长度列表如下(无符号unsigned和有符号的长度一样): linux64 windows64 linux32 windows32char 8转载 2013-07-04 10:36:44 · 3608 阅读 · 0 评论 -
Ubuntu 12.04LTS g++编译错误解决
1.gcc版本过高,解决方法sudo apt-get install gcc-4.4sudo apt-get install g++-4.4装完后在/usr/bin目录下sudo mv gcc gcc.baksudo ln -s gcc-4.4 gccmv g++-4.4 g++g++ -v2.selected multilib '32' not install转载 2013-03-19 10:05:09 · 1610 阅读 · 0 评论 -
while(cin >> buf)在linux下实现停止输入的办法
问题:ubuntu下编写测试下标运算符[]重载的程序。使用while (cin >> buf)将接收到的字符串存储到string buf中,不知道该怎样结束cin的输入操作;解决办法:1. 放狗搜,结论是linux下使用Ctrl+d,windows下使用Ctrl+z来结束键盘输入。源程序如下:#include #include using namespace st原创 2013-05-17 20:10:09 · 3018 阅读 · 0 评论 -
C++ using namespace std 详解
一 :和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。因此,当使用时,相当于在c中调用库函数,使用转载 2012-10-22 11:11:14 · 924 阅读 · 0 评论 -
引用参数和传值参数的区别
1. 我们都知道,普通的传值参数是由行参传给实参;编译器在函数内部为每一个参数产生一个临时变量,将每一个参数压入栈(stack)中,将实参的数值保存到临时变量中。所以才有在低端8位机中,对参数的数量有比较严格的限制,因为栈的深度非常有限;当然,在通用机上也有同样的问题,参数过多不合适,但通用机的栈的深度比低端机大多了;2. 引用做参数传递的是变量的地址;实质上传递的是变量的指针;原创 2012-08-16 11:12:05 · 4883 阅读 · 0 评论 -
安装KDevelop开发c/c++程序
1. KDevelop只是一个IDE,要想编译c/c++程序,要安装make和GCC,以及头文件,那就从这里开始:sudo apt-get build-dep gcc sudo apt-get install build-essential 2.安装KDevelopsudo apt-get install kdevelop33.安装好后,可以在应用程序->编程 中看到转载 2012-03-22 11:08:36 · 4585 阅读 · 0 评论 -
c++中const使用详解
关于C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,参考了康建东兄的const使用详解一文,对其中进行了一些补充,写下了本文。1. const常量如:const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生转载 2012-10-18 11:08:08 · 708 阅读 · 0 评论 -
error: ‘errno’ was not declared in this scope
问题:将一个c文件改为cpp文件,其中的perror()改用C++中的std::cerr 重新编译文件,出现错误:david@ubuntu:~/wrk/tmp/cpp_src/sysapps$ makeg++ -g3 -Wall -o0 -c message_recv.cpp -o message_recv.omessage_recv.cpp: In constructor ‘原创 2013-06-22 16:41:01 · 22669 阅读 · 0 评论 -
C++用new和不用new创建类对象区别
起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想区别也不是太大,但是在大一点的项目设计中,有时候不使用new的确会带来很多问题。当然这都是跟new的用法有关的。new创建类对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高转载 2013-07-12 11:21:41 · 1126 阅读 · 0 评论 -
C++中的this指针
2011-04-11 11:09 百度 百度 我要评论(0) 字号:T | T一个对象的成员函数其实就是一般的全局函数,只是编译器给它隐含加了一个指向该对象的const指针,这就是this指针。下面让我们一起来了解一下this指针吧!AD:2013云计算架构师峰会超低价抢票中this 指针是一个隐含于每一个类的成员函数中的特殊指针(包转载 2013-07-12 13:41:40 · 1065 阅读 · 1 评论 -
C++之this指针与另一种“多态”
一、引入 定义一个类的对象,首先系统已经给这个对象分配了空间,然后会调用构造函数(说明:假设存在构造函数--2010.9.5修正)。一个类有多个对象,当程序中调用对象的某个函数时,有可能要访问到这个对象的成员变量。而对于同一个类的每一个对象,都是共享同一份类函数。对象有单独的变量,但是没有单独的函数,所以当调用函数时,系统必须让函数知道这是哪个对象的操作,从而确定成员变量是哪个对象的。这转载 2013-07-12 13:50:39 · 1162 阅读 · 0 评论 -
c/c++写的比较好的读写配置文件的函数或者类
共用版 .h文件//----------------------------------------------------------------------------// 程序名称: ConfigFile.h// 程序说明: 类 ConfigFile 的定义// 程序作者: // 程序版本: 1.0// 开始日期: 1999-01-10转载 2013-07-13 20:15:52 · 18916 阅读 · 2 评论 -
C++编写Config类读取配置文件
老外写的一段代码,在Server中编写这个类读取配置文件比较实用 C++代码 //Config.h #pragma once #include #include #include #include #include /* * \brief Generic configuration Cla转载 2013-07-13 20:13:35 · 21125 阅读 · 6 评论 -
C/C++中判断某一文件或目录是否存在
C/C++中判断某一文件或目录是否存在 1.C++很简单的一种办法:#include iostream>#include fstream>using namespace std;#define FILENAME "stat.dat"int main(){ fstream _file; _file.open(FILENAME,i转载 2013-06-27 16:12:15 · 3443 阅读 · 0 评论 -
C++中Segmentation fault(Core Dump)错误处理
什么是Core Dump?Core的意思是内存, Dump的意思是扔出来, 堆出来.开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考.core dump又叫核心转储, 当程转载 2013-07-13 15:37:48 · 12389 阅读 · 0 评论 -
pthread_cond_wait()用法分析
很久没看APUE,今天一位朋友问道关于一个mutex的问题,又翻到了以前讨论过的东西,为了不让自己忘记,把曾经的东西总结一下。先大体看下网上很多地方都有的关于pthread_cond_wait()的说明: 条件变量 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件转载 2013-07-17 14:00:23 · 973 阅读 · 0 评论 -
vs2010下如何调试带输入参数的程序
当main函数的输入参数为空时,我们可以很方便的通过设置断点,单步运行的方法调试,可是如果需要调试的是有输入参数的程序该怎么办呢?最终还是让我找到了:英文版:Project -> Properties -> Configuration Properties -> Debugging在Command Arguments里填上即可。中文版:菜单[项目] -> 属性页 -> 配置转载 2014-08-05 11:02:50 · 2210 阅读 · 0 评论