C++交流
文章平均质量分 62
thinkme2010
这个作者很懒,什么都没留下…
展开
-
extern “C”和extern “C++ ”
以前基本没接触过extern “C”或者extern “C++ ”这样的用法。可能企业中会用到,就来小记下,以后不会了在回头来看下。实在不行就百度啦! 从字面意思来看,extern就是申明她修饰的函数或者全局变量(记住是全局变量哦)可以被本模块或者其它模块所调用。“C”/“C ”就是连接规范的规定,表明采用的是C还是C 连接规范。比如模块B想调用模块A的全局变量,只需要转载 2013-06-13 15:32:13 · 517 阅读 · 0 评论 -
vi/vim 光标移动命令
移动光标上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行下:j nj:向下移动n行左:h nh:向左移动n列右:l nl:向右移动n列w:光标以单词向前移动 nw:光标向前移动n个单词 光标到单词的第一个字母上b:与w相反e: 光标以单词向前移动 ne:光标向前移动n个单词 光标到单词的最后一个字母上ge:与e相反$:移动光标到转载 2015-07-29 11:35:32 · 322 阅读 · 0 评论 -
Eclipse中c开发printf无法输出解决办法
在ecplise下使用cdt开发c程序,发现运行后终端没有输出,停止后会输出,通过在main中添加setbuf(stdout,NULL);解决问题,原来是因为默认输出流存在buffer机制,通过上面语句, 取消buffer转载 2015-07-29 12:52:59 · 2169 阅读 · 0 评论 -
关于三级指针
#includechar *c[ ] = { "ENTER" , "NEW" , "POINT" , "FIRST"};char **cp[ ] = { c+3 , c+2 , c+1 , c };char ***cpp = cp;main ( ){ printf ( "%s#" , **++cpp ); printf ( "%s#" , *转载 2015-07-29 15:36:13 · 5376 阅读 · 0 评论 -
关于指针
Starting offSay you declare a variable named foo.int foo;This variable occupies some memory. On current mainstream Intel processors, it occupies four bytes of memory (because an int is f转载 2015-07-29 15:27:47 · 483 阅读 · 0 评论 -
判断语句的嵌套处理优化
IntroductionIf you've ever written or looked at code with several levels of nested if statements, you know how difficult it can be to maintain. In this article, I will present code that eliminat转载 2015-07-30 12:13:16 · 425 阅读 · 0 评论 -
C++中L和_T()之区别
字符串前面加L表示该字符串是Unicode字符串。_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual C++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。以下是别人的总结:转载 2015-07-23 23:07:17 · 461 阅读 · 0 评论 -
C++标志粘贴##怎么使用
“##”是一种分隔连接方式,它的作用是先分隔,然后进行强制连接。其中,分隔的作用类似于空格。我们知道在普通的宏定义中,预处理器一般把空格解释成分段标志,对于每一段和前面比较,相同的就被替换。但是这样做的结果是,被替换段之间存在一些空格。如果我们不希望出现这些空格,就可以通过添加一些 ##来替代空格。举列 -- 试比较下述几个宏定义的区别 #define A1(name, type转载 2015-07-23 23:06:39 · 816 阅读 · 0 评论 -
define和typedef 区别
#define 是宏命令,在编译前,由预处理器做替代,如同文本编辑的替代命令,把程序中的所有遇到的词,全部替代。#define PINT int* 就是把所有的词 PINT 替换成 int * ,替换完毕再编译。 typedef int* pint; 是语句,由编译器在编译过程中编译处理。int* x; 和pint x; 的声明是等价的typedef int* pint;lon转载 2015-07-23 23:27:38 · 290 阅读 · 0 评论 -
std::map的insert和下标[]访问
在map中插入元素改变map中的条目非常简单,因为map类已经对[]操作符进行了重载enumMap[1] = "One";enumMap[2] = "Two";.....这样非常直观,但存在一个性能的问题。插入2时,先在enumMap中查找主键为2的项,没发现,然后将一个新的对象插入enumMap,键是2,值是一个空字符串,插入完成后,将字符串赋为"Two"; 该方转载 2015-08-18 11:29:19 · 331 阅读 · 0 评论 -
boost处理string
boost::algorithm提供了很多字符串算法,包括: 大小写转换; 去除无效字符; 谓词; 查找; 删除/替换; 切割; 连接; 我们用写例子的方式来了解boost::algorithm能够为我们做些什么。boost::algorithm学习#include using namespace std;using namespace boost; 一:大小写转换1转载 2015-08-18 16:35:14 · 333 阅读 · 0 评论 -
关于*和++优先级以及使用
关键在于熟练掌握操作符的优先级和++的使用方法*p=*p+1;此处*为间接访问,P指向的地址内容+1后的值赋给P指向的地址 *p++;//这里*和++为同一优先级,P先和++结合;右移P++是先使用P的值,后P的值+1 //*p++和*p=*p+1的区别是后者是P指向的地址的值+1,前者是P的地址+1,所有后者、即单独的*p++;等价于P++,是一种容易误解的写法,在实际程序中转载 2015-09-28 17:49:43 · 1738 阅读 · 0 评论 -
关于栈上的单体结构
class createFun{public :virtual int * create(){return new int;}};我定义了这样一个对象,如果希望这个对象实现一个单体模式,那么常用的就是在堆上构建,如:在内部这么写class createFun{public :static createFun* _instance(){static cr原创 2015-09-24 11:00:01 · 332 阅读 · 0 评论 -
可变参数
C函数调用的栈结构 可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈。例如,对于函数: void fun(int a, int b, int c) { int d; ... }其栈结构为 0x1ffc-->d转载 2015-09-24 11:19:16 · 448 阅读 · 0 评论 -
Ubuntu 12.04 安装设置gcc4.4
在Ubuntu 12.04中的默认的GCC版本是4.6。但是这个版本在编译android 4.0源码的时候会出差,下面是安装和设置GCC4.4的方法。下文来自网络:http://mjanja.co.ke/2012/04/ubuntu-gcc-4-4-considered-harmful/I’ve been having some problems with Ubuntu 11.10转载 2015-07-28 14:02:40 · 299 阅读 · 0 评论 -
operator 的主要用法
1. operator 用于类型转换函数:类型转换函数的特征:1) 类型转换函数定义在源类中; 2) 必须须由 operator 修饰,函数名称是目标类型名或目标类名; 3) 函数没有参数,没有返回值,但是有return语句,在return语句中返回目标类型数据或调用目标类的构造函数。类型转换函数主要有两类:1) 对象向基本数据类型转换:转载 2015-07-27 17:51:54 · 729 阅读 · 0 评论 -
return value of operator overloading in C++
up vote25down votefavorite8I have a question about the return value of operator overloading in C++. Generally, I found two cases, one is return-by-value, and one is return-by-refer转载 2015-07-27 17:39:45 · 603 阅读 · 0 评论 -
extern 和 extern "C" 分析summary
from:http://hi.baidu.com/cjmxp/blog/item/3b2e3f9b0cb969bdc9eaf4c0.htmlexternextern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字.它告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。1。对于extern变量来说,仅仅是一个变量的声明,其并不是在定义分配内存空间。如果该变量转载 2013-06-13 16:43:44 · 410 阅读 · 0 评论 -
类型转换总结
dynamic_cast : 由父类转化成子类QGraphicsItem *gitem,CIMGSensitive是QGraphicsItem子类CIMGSensitive *pStation = dynamic_cast(gitem);//判断,如果(pStation)为空,则转换失败if (pStation){}子类转父类:直接转就可以了 QGraphic原创 2013-06-05 10:58:18 · 403 阅读 · 0 评论 -
命令行参数
命令行的参数1、 什么是命令行的参数?字面理解:在命令行中给定的参数就是命令行参数。(即从输入位置角度理解)在加载主类时,给定的参数。(有main方法的类称为主类,而命令行参数都是送给main方法的,所以也可以说命令行参数是送给main方法的参数)。如: java Test1 365 156 "China"(以上Test1必须为主类,否则不能运行)2、命令行的参数由谁来接收转载 2013-06-17 15:39:25 · 568 阅读 · 0 评论 -
XPath总结1
为客户做了一年的xml处理工作,觉得应该把xpath总结一下。利用puginxml解析xml文档,利用树形的节点方式进行查询,本身支持xpath。1、关于节点和匹配属性: /SCL/Substation/VoltageLevel[@Private='aaaa'] SCL为xml树的根节点,知道了节点层级路径可以轻松找到VoltageLevel,而通过属性值过滤出我们希望得到的原创 2015-03-27 17:35:33 · 378 阅读 · 0 评论 -
C/C++中extern关键字详解
C/C++中extern关键字详解1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这转载 2015-04-24 16:08:04 · 272 阅读 · 0 评论 -
关于函数指针
int func_s(int){return 1;}typedef int (*FUNC_C)(int);FUNC_C f = func_s; //(1)FUNC_C f = &func_s; //(2) foo就是编译器看到了强转成foo()的地址,&foo编译器当取foo()的地址 http://stackoverflow.com/questions/6893285/w原创 2015-04-24 10:17:08 · 303 阅读 · 0 评论 -
effective c++笔记
关于迭代器,STL iterators are modeled on pointers,可以这么说迭代器就是指针。这是一篇关于const的讨论,很感动,define不是抛弃而是尽量不用,如果想代替一段反复使用的代码,我觉得还是使用#define比较方便一些,而如果是一些字符串等常量还是用const比较好,作者说这样可以减少反复的copy。const限制指针以*(asterisk)来分割,左翻译 2015-04-27 10:20:23 · 290 阅读 · 0 评论 -
友元详解
问题的提出 我们已知道类具备封装和信息隐 藏的特性。只有类的成员函数才能访问类的私有成员,程式中的其他函数是无法访问私有成员的。非成员函数能够访问类中的公有成员,但是假如将数据成员都定义 为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,特别是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间开 销,而影响程式的运行效率。 为了解决上述问题,提转载 2015-07-25 15:37:47 · 250 阅读 · 0 评论 -
为什么C++基类析构函数写成虚函数
下面的代码举例:// virtual.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #define MAXLEN 128class CEmployee{public:int m_ID;char m_Name[MAXLEN];char m_Depart[MAXLEN];CEmployee(){p转载 2015-07-25 15:12:54 · 601 阅读 · 0 评论 -
关于函数指针
关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用。 //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } 第一行定义了一转载 2015-07-25 15:43:15 · 271 阅读 · 0 评论 -
使用intptr_t和uintptr_t
intptr_t 和uintptr_t 类型用来存放指针地址。它们提供了一种可移植且安全的方法声明指针,而且和系统中使用的指针长度相同,对于把指针转化成整数形式来说很有用。uintptr_t 是intptr_t 的无符号版本。对于大部分操作,用intptr_t 比较好。uintptr_t 不像intptr_t 那样灵活。下面的例子说明如何使用intptr_t:int num;转载 2015-07-27 22:55:05 · 1027 阅读 · 0 评论 -
安装cpplint
安装physon是前提条件,方便的话把所有相关组件都装上:sudo apt-getinstall php5sudo apt-getinstall php5-gdsudo apt-getinstall php5-mysqlsudo apt-getinstall php5-xhprofsudo apt-get install python-原创 2015-07-27 16:57:44 · 3976 阅读 · 0 评论 -
C++关于匿名空间
一、匿名namespace的作用在C语言中,如果我们在多个tu(translation unit)中使用了同一个名字做为函数名或者全局变量名,则在链接阶段就会发生重定义错误,为了解决这个问题,我们可以在定义这些标识符(identifier)的时候加上static关键字修饰以限制它只在一个tu范围内可见。C++继承了C语言中static关键字的这个用途,我们依旧可以使用static来避免多个转载 2015-07-27 12:41:18 · 857 阅读 · 0 评论 -
关于include<vector>编译错误问题
One of your header files is almost certainly including:#include Before that line, add:#undef maxAnd I believe your compiles will start working. This is happening b/c you are also using t转载 2015-10-14 13:26:52 · 2597 阅读 · 0 评论