阳光日志

向着阳光,每天进步一点点!

“DWORD”: 重定义;不同的基类型

在写设备相关的代码时,定义了这样一个枚举enum DEVICE_TYPE { DEVICE_NONE = 0, DEVICE_SPEAKER = 1, DEVICE_MICROPHONE_ = 2, DEVICE_CAMERA_ = 3 };这个再正常不过了,但编译时却报了一个莫名其妙的错误: ...

2017-10-17 21:51:23

阅读数:1083

评论数:0

C++获取系统当前时间(精确到微秒)

获取系统当前时间在调试、日志输出、代码优化时,我们常常需要获得系统的时间。在一些性能要求高的代码优化时,对时间的精确度还比较高。在网上找不高质量的代码,便自己研究了一下,代码如下(能满足跨平台的要求,单位精确到微秒)

2016-05-05 19:02:10

阅读数:16464

评论数:3

带你玩转Visual Studio——incremental linking(增量链接)的作用

今天编译一个C++程序时,报了一个奇怪的错误(之前是好好的):1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corruptGoogle上搜了一下解决方案:把Project Pr...

2015-11-14 00:23:50

阅读数:6227

评论数:3

字符集和字符编码(Charset & Encoding)

原文:字符集和字符编码(Charset & Encoding)原作者:吴秦(Tyler)——每个软件开发人员应该无条件掌握的知识!——Unicode伟大的创想!相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"бЇЯАзЪСЯ"、"�????????&q...

2015-10-25 22:57:30

阅读数:5108

评论数:2

带你玩转Visual Studio——带你理解多字节编码与Unicode码

上一篇文章带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑帮我们理解了Windows中的各种类型C/C++运行时库及它的来龙去脉,这是C++开发中特别容易误入歧途的一个地方,我们对它进行了总结和归纳。本篇文章我们将继续讲解C++开发中容易混淆的另一个概念——多字...

2015-10-25 22:55:33

阅读数:29670

评论数:11

C Runtime Library 的来历

运行时库就是C Run-Time Library,是C而非C++语言世界的概念。取这个名字就是因为你的C程序运行时需要这些库中的函数。 C Run-Time Library里面含有初始化代码,还有错误处理代码(例如divide by zero处理)。你写的程序可以没有 math库,程序照样运行,只...

2015-10-11 17:45:59

阅读数:4430

评论数:0

C++读取注册表

昨天受一朋友要求,帮忙写一个用C++读取注册表的程序。这个朋友是搞Java的,肯定不知道C++怎么写啦!他的需求也奇怪:用js调用一个浏览器插件,通过插件获取注册表中指定键的值,插件肯定是用C++写了。于是乎我就在网上查了一下“C++读取注册表”,一搜一大片但都是一些初学C++的人写的,多数不能用...

2015-07-31 21:32:36

阅读数:8460

评论数:9

assert预处理宏与预处理变量

assertassert是一个预处理宏,由预处理器管理而非编译器管理,所以使用时都不用命名空间声明,如果你写成std::assert反而是错的。使用assert需要包含cassert或assert.h,用法如下:assert(expr) assert主要用途是:用于调试,检测一些不应该出现的情况。...

2015-07-26 23:47:20

阅读数:2400

评论数:0

C++“隐藏实现,开放接口”的实现方案

为什么要有接口?接口就是一个程序与其它程序交流的窗口。就比如有一个电视机,我并不需要知道它是怎样工作的,我只要知道按电源键就可以开启电视,按节目加(+)减(-)可以切换电视频道就可以了。Java程序员都知道Java中有interface可以实现对外的接口,但C++并没有接口这样的语法,那它要好怎样...

2015-07-24 00:10:52

阅读数:5958

评论数:6

C++中类的多继承

在写这一主题的文章之前,在网上找到一篇很非常好的文章C++之继承与多态。就没有必要做重复造轮子的事件了,那就从这篇文章开始吧!在c++中一个类可以从多个基类中派生(即可以有多个父类),这就是多继承。多继承的方式主要有两种:1. 简单版本 类C会同时拥有类A和类B的特性(属性和方法,也就是两个...

2015-07-19 23:07:43

阅读数:12619

评论数:2

C++的三种访问权限与三种继承方式

三种访问权限我们知道C++中的类,有三种访问权限(也称作访问控制),它们分别是public、protected、private。要理解它们其实也很容易,看下面了一个例子。 父类:class Person { public: Person(const string& name, i...

2015-07-19 11:10:18

阅读数:13696

评论数:4

new/delete 和malloc/free 的区别

原文:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/16/2593754.html一、基本概念     malloc/free:1、函数原型及说明:      void *malloc(long NumBytes):该函数分配了NumByte...

2015-06-07 10:22:06

阅读数:2482

评论数:0

C++拷贝构造函数详解

一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyint a = 100;  int b = a;   而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。[c-sh...

2015-05-13 17:03:09

阅读数:1357

评论数:1

const T、const T*、T *const、const T&、const T*& 的区别

这里的T指的是一种数据类型,可以是int、long、doule等基本数据类型,也可以是自己类型的类型class。单独的一个const你肯定知道指的是一个常量,但const与其他类型联合起来的众多变化,你是不是就糊涂了?下面我们一一来解析。 const T、const T*、T *const、con...

2015-05-09 12:35:55

阅读数:17734

评论数:5

C++中的命名空间namespace

在一个企业级的开发中,一个工程往往会很大,定义的类和方法也会特别多,而且还会引入很多的第三方库,这就不可避免的会有一些同名的冲突问题。在Java中有包(Package)的概念,也就是将不同功能的类分成不同的包,来解决名称的冲突,C++中是用命名空间来解决这种冲突的。  什么是命名冲突假设你的程序中...

2015-03-09 00:03:53

阅读数:3494

评论数:0

boost——正则表达式

前面一篇文章《编程思想之正则表达式》中讲了正则表达式的编程思想和各种语言下的使用,我们都知道C++标准库自带的正则表达式非常难用,而boost对一个功能进行了拓展,前面一篇文章《boost——入门指南》讲了boost使用环境的配制和入门指南,这篇文章将进一步说说boost中正则表达式的使用,如果您...

2015-02-01 22:24:25

阅读数:2098

评论数:0

带你玩转Visual Studio——VS2010断点进不去解决方法

按F9断点变灰,Debug调试时进不去断点,提示:The breakpoint will not currently be hit. The source code is different from original version. 大概的意思是说当前的代码与执行文件对应版本的代码不同,这就需...

2015-01-20 19:04:17

阅读数:17513

评论数:2

boost——入门指南

boost库是一个开源免费的第三方库,它是一个非常优秀的库,是C++标准的最好实践之一,因此也经常被用于商业的开发。所以,如果你是搞C++的,还没有听过或用过boost,你就out了,想想自己是不是跟不上技术的步伐了,哈哈……

2015-01-18 11:21:51

阅读数:12241

评论数:1

#pragma once与#ifndef #define ...#endif的区别

1.      #pragma once用来防止某个头文件被多次include;     #ifndef,#define,#endif用来防止某个宏被多次定义。 2.       #pragma once是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基...

2015-01-09 09:56:27

阅读数:5213

评论数:1

typedef与#define的区别

1.  typedeftypedef故名思意就是类型定义的意思,但是它并不是定义一个新的类型而是给已有的类型起一个别名,在这一点上与引用的含义类似,引用是变量或对象的别名,而typedef定义的是类型的别名。typedef的作用主要有两点:1.1  简化复杂的类型声明简化复杂的类型声明,或给已有类...

2014-11-30 23:07:05

阅读数:20052

评论数:5

提示
确定要删除当前文章?
取消 删除
关闭
关闭