![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
zlwzlwzlw
学习C 、 C++ 、 VC 、 C# 、 .net
展开
-
Google C++编程风格指南(一):头文件
背景 Google的开源项目大多使用C++开发。每一个C++程序员也都知道,C++具有很多强大的语言特性,但这种强大不可避免的导致它的复杂,这种复杂会使得代码更易于出现bug、难于阅读和维护。本指南的目的是通过详细阐述在C++编码时要怎样写、不要怎样写来规避其复杂性。这些规则可在允许代码有效使用C++语言特性的同时使其易于管理。风格,也被视为可读性,主要指称管理C转载 2009-12-07 16:17:00 · 1312 阅读 · 0 评论 -
C++ Primier读后感 之 第五章 语句
第五章:1. switch语句case 字句中是不允许定义变量的,如果要定义必须放在一个语句块中。switch(a){int n = 0; 正确,这里可以定义变量case 1:int m = 0; 错误,不能在这里定义变量break;case 2:{int z = 0; 正确,在case的语句块中可以定义变量break;原创 2010-02-23 10:23:00 · 532 阅读 · 0 评论 -
C++ Primier读后感 之 第七章 函数
第七章:函数1. const类型函数参数当一个函数的参数为const的引用或指针类型时,在函数的作用域中必须保证参数不改变:extern fun1(int &);void fun(const int & xx){fun1(xx); 错误,无法保证在fun1中xx不被改变}上面的错误有三种修改方案:(1) extern fun1(int); 把fu原创 2010-02-25 16:15:00 · 861 阅读 · 0 评论 -
C++ LNK2001错误总结
学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。 unresolved external symbol (不确定的外部“符号”)。原创 2010-02-26 15:50:00 · 1513 阅读 · 0 评论 -
C++ Primier读后感 之 第八章 域和生命期
第八章:1. 变量的声明extern int obj; 声明一个已经定义的对象obj,此时编译器不分配空间。extern int obj = 0; 定义了一个obj对象,同时初始化为0,编译器要分配空间。 2. C++头文件在C++中头文件是所有extern对象声明,函数声明,inline函数定义和const变量定义的一个集中的位置。头文件提供了 两原创 2010-03-04 13:22:00 · 992 阅读 · 0 评论 -
C++学习阶段
当读者有一定c/c++基础推荐的阅读顺序:level 1从>开始,短小精悍,可以对c++能进一步了解其特性以>作字典和课外读物,因为太厚不可能一口气看完level 2然后从>开始转职,这是圣经,请遵守10诫,要经常看,没事就拿来翻翻接着是>,个人认为Herb Sutter主席大人的语言表达能力不及Scott Meyers总是在教育第一线的好顺下来就是>和>,请熟转载 2010-02-20 23:27:00 · 607 阅读 · 0 评论 -
读书笔记之《C语言编程技巧程序集》
最近看完了这本书,其中比较重要的东西做了笔记。 1. 整数常量默认是int型,如果常量值超出整形表达范围,则自动变为long int型。2. C语言基本类型: int short long float double long double char。没有bool型。3. 算术运算类型转换规则如下: (原创 2012-01-11 22:10:35 · 1399 阅读 · 0 评论 -
C++命名规则
最近又开始C++的学习,很多之前记得的规则,现在感觉又有些模糊,慢慢复习,往回找补吧。C++命名规则,下面是在网上找的比较简短的一篇,该说明的也都有所说明,转载之。命名规范的整体原则同一性在编写一个子模块或派生类的时候,要遵循其基类或整体模块的命名风格,保持命名风格在整个模块中的同一性。 标识符组成标识符采转载 2012-10-10 11:16:25 · 631 阅读 · 0 评论 -
”QQ尾巴“功能模拟
最近又开始学习windows hook技术了,看到“QQ尾巴”有点意思, 所以就利用hook简单的实现了一下。基本原理如下:因为QQ消息大都是通过回车键或回车键加其他键的组合键来发送的,所以只要利用键盘钩子钩住系统中的回车键的WM_KEYDOWN消息即可。检测到回车键按下时,首先检测当前拥有输入焦点的窗口是否是QQ聊天窗口,这里对QQ聊天窗口的判断是,检查窗口类名是否是“T原创 2012-10-10 10:21:38 · 4831 阅读 · 0 评论 -
C++引用、指针的选择
最近一直在纠结在C++中是选择指针还是引用。纠结了很长时间,现在基本上可以确定下来。首先说明一个指针和引用直接的区别。这个区别很常见,熟悉C++的人应该都很说上来。1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终;4. 引用没有 const,指针有 con原创 2012-10-15 17:14:09 · 1009 阅读 · 1 评论 -
C++头文件包含
C++编译是一件非常费时的事情,为了尽量的减少编译时间,必须更好的包含头文件。下面有几条很重要的教条,可以参考。(1) 在头文件中能用类前置声明代替头文件包含的就用前置声明。因为使用类前置声明,当引用的类发生改变时,当前文件不需要重新编译。 (a)必须要包含头文件的情况 (*) A继承C,A类的头文件中必须要包含C的头文件;原创 2012-10-18 14:17:55 · 1328 阅读 · 0 评论 -
标准输入stdin流工作方式
stdin是C中的标准输入流,它是缓冲输入方式。在程序中,当用户调用stdin相关函数从键盘中获取字符时,函数会先去缓冲区中查看当前是否存在字符。如果存在,则会取出字符;如果不存在,则会中断,提示用户输入。用户利用键盘输入时,输入的字符会依次被送到缓冲区中,在此处等待的输入函数只有在用户输入了回车时,才会去缓冲区中取字符。当刷新缓冲区后,缓冲区会被清空。当输入函数从缓冲原创 2009-12-15 17:42:00 · 3953 阅读 · 2 评论 -
C/C++函数调用的几种方式
调用函数时,计算机常用栈来存储传递给函数的参数。栈是一种先进后出的数据结构,栈有一个存储区、一个栈顶指针。栈顶指针指向堆栈中第一个可用的数据项(被称为栈顶)。用户可以在栈顶上方向栈中加入数据,这个操作被称为压栈(Push),压栈以后,栈顶自动变成新加入数据项的位置,栈顶指针也随之修改。用户也可以从堆栈中取走栈顶,称为弹出栈(pop),弹出栈后,栈顶下的一个元素变成栈顶,栈顶指针随之修改。函数调原创 2009-12-15 15:33:00 · 1287 阅读 · 0 评论 -
Google C++编程风格指南(三):C++ 类
C++类 类是C++中基本的代码单元,自然被广泛使用。本节列举了在写一个类时要做什么、不要做什么。 1. 构造函数(Constructor)的职责 构造函数中只进行那些没有实际意义的(trivial,简单初始化对于程序执行没有实际的逻辑意义,因为成员变量的“有意义”的值大多不在构造函数中确定)初始化,可能的话,使用Init()方法集中初始化为有意义的(n转载 2009-12-07 16:20:00 · 799 阅读 · 1 评论 -
Google C++编程风格指南(五):命名约定
命名约定 最重要的一致性规则是命名管理,命名风格直接可以直接确定命名实体是:类型、变量、函数、常量、宏等等,无需查找实体声明,我们大脑中的模式匹配引擎依赖于这些命名规则。 命名规则具有一定随意性,但相比按个人喜好命名,一致性更重要,所以不管你怎么想,规则总归是规则。1. 通用命名规则(General Naming Rules) 函数命名、变量转载 2009-12-07 16:24:00 · 863 阅读 · 0 评论 -
Google C++编程风格指南(七):格式
格式 代码风格和格式确实比较随意,但一个项目中所有人遵循同一风格是非常容易的,作为个人未必同意下述格式规则的每一处,但整个项目服从统一的编程风格是很重要的,这样做才能让所有人在阅读和理解代码时更加容易。1. 行长度(Line Length)每一行代码字符数不超过80。我们也认识到这条规则是存有争议的,但如此多的代码都遵照这一规则,我们感觉一致性更重要。优点:提倡该原则的转载 2009-12-07 16:27:00 · 906 阅读 · 0 评论 -
Google C++编程风格指南(八):规则之例外
规则之例外 前面说明的编码习惯基本是强制性的,但所有优秀的规则都允许例外。1. 现有不统一代码(Existing Non-conformant Code)对于现有不符合既定编程风格的代码可以网开一面。当你修改使用其他风格的代码时,为了与代码原有风格保持一致可以不使用本指南约定。如果不放心可以与代码原作者或现在的负责人员商讨,记住,一致性包括原有的一致性。1. Windo转载 2009-12-07 16:28:00 · 660 阅读 · 0 评论 -
Google C++编程风格指南(二):作用域
作用域 1. 命名空间(Namespaces) 在.cpp文件中,提倡使用不具名的命名空间(unnamed namespaces,不具名的命名空间就像不具名的类一样,似乎被介绍的很少)。使用具名命名空间时,其名称可基于项目或路径名称,不要使用using指示符。定义:命名空间将全局作用域细分为不同的、具名的作用域,可有效防止全局作用域的命名冲突。优点:命名空间提供了转载 2009-12-07 16:18:00 · 812 阅读 · 0 评论 -
Google C++编程风格指南(四):智能指针和其他C++特性
Google特有的风情 Google有很多自己实现的使C++代码更加健壮的技巧、功能,以及有异于别处的C++的使用方式。1. 智能指针(Smart Pointers) 如果确实需要使用智能指针的话,scoped_ptr完全可以胜任。在非常特殊的情况下,例如对STL容器中对象,你应该只使用std::tr1::shared_ptr,任何情况下都不要使用auto转载 2009-12-07 16:21:00 · 1010 阅读 · 1 评论 -
Google C++编程风格指南(六):代码注释
注释 注释虽然写起来很痛苦,但对保证代码可读性至为重要,下面的规则描述了应该注释什么、注释在哪儿。当然也要记住,注释的确很重要,但最好的代码本身就是文档(self-documenting),类型和变量命名意义明确要比通过注释解释模糊的命名好得多。注释是为别人(下一个需要理解你的代码的人)而写的,认真点吧,那下一个人可能就是你!1. 注释风格(Comment Style)使用转载 2009-12-07 16:26:00 · 836 阅读 · 0 评论 -
C++ 预处理命令
1. #include读入指定文件的命令,它包含两种格式: #include #include "my_file.h"用“用“""”括起来的,表明此文件是由用户提供的文件,查找该文件时将从当前目录开始。 2. #ifndef.....#define.......#endif此指令用了检测指定的宏是否已经定义。在一个文件的开始和结尾加上此指令可以防止原创 2009-12-10 23:41:00 · 731 阅读 · 0 评论 -
C++ Primier读后感 之 第三章 C++数据类型
第三章:1. 文字常量也存储在内存中的某个位置,但是我们无法访问它的地址。 2. 整形文字常量20 正常写法被认为是十进制整形文字常量024 以0开头的被认为是八进制整形文字常量0x16 以 0x 或 0X 开头的被认为是十六进制的整形文件常量 3. 整形文字常量类型20 默认情况是int型20l(20L) long原创 2010-02-23 09:21:00 · 1058 阅读 · 0 评论 -
C++ Primier读后感 之 第四章 表达式
第四章:1. 条件运算符int * ptr; if(ptr != 0 && *ptr != 0){} &&运算符当左边为false时,右边的条件语句不执行。int * ptr; if(ptr == 0 || *ptr != 0){} ||运算符当左边为true时,右边的条件不执行。利用这两个特性,我们可以把比较危险的语句放在右边,以防止运行时出错。比如,如果pt原创 2010-02-23 09:45:00 · 534 阅读 · 0 评论 -
键盘记录工具(支持中文)
看到网上有很多键盘记录工具,技痒,于是自己动手写了一个。 记录键盘,很显然需要使用钩子。如果只是记录所按下的按键,使用WH_KEYDOWN_LL即可,此钩子可以拦截所有按下键盘的动作(除极少数键外)。但是如果要记录通过输入法输入的中文字符,那么WH_KEYDOWN_LL是不够的,这里需要使用WH_GETMESSAGE钩子。这个钩子拦截所有从消息队列中取出的消息。而windows上所原创 2012-11-13 15:23:05 · 7780 阅读 · 11 评论