
C++
文章平均质量分 50
admirxue
这个作者很懒,什么都没留下…
展开
-
define和typedef的区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926程序中的:area=PI*r*r 会替换为3.1415926*r*r如果你把#define语句中的原创 2009-11-21 09:28:00 · 191 阅读 · 0 评论 -
在C++中,如何使用联合体?
<br />对联合体变量的引用,是通过对联合体变量中各成员的引用来实现的。对成员的引用格式如下:<br />【格式】<联合体变量名>.<成员名><br />【说明】由于联合体变量的几个成员共同拥有同一段存储区域,联合体变量的地址和其成员的地址都是相同的,因此联合体变量的各个成员不可能同时存在。某一时刻只有一个成员存在并发挥作用,其他成员就不存在。联合体变量中起作用的成员就是最近一次得到赋值的那个成员。因此,只能对联合体变量中的成员赋值,不能对联合体变量进行整体赋值,也不能对联合体变量进行初始化,更不能把联合原创 2010-09-19 13:12:00 · 3095 阅读 · 0 评论 -
LARGE_INTEGER类型 和 QueryPerformanceFrequency()
<br />转载:http://www.cnblogs.com/whiteyun/archive/2009/09/17/1568240.html<br />LARGE_INTEGER<br />LARGE_INTEGER是union;用于表示一64位有符号整数值.其他定义如下: <br /> <br />typedef union _LARGE_INTEGER { <br /> struct { <br /> DWORD转载 2010-08-12 09:41:00 · 228 阅读 · 0 评论 -
dll
<br />//define.h<br /> <br />#ifdef ATBASEDEFINE_EXPORTS<br />#define BASEDEFINE_API __declspec(dllexport)<br />#else<br />#define BASEDEFINE_API __declspec(dllimport)<br />#endif原创 2010-07-13 15:55:00 · 171 阅读 · 0 评论 -
杂记
1、_T()需要包含头文件“tchar.h”;2、WX中加DIALOG需要重载RUN(),否则关闭DIALOG释放不了资源;原创 2010-05-13 15:13:00 · 164 阅读 · 0 评论 -
IPC
<br />#pragma once<br />#include "boost/signal.hpp"<br />#include "define.h"<br />class IPCHELPER_API INetCommunicate<br />{<br />public:<br /> typedef boost::signal<void (BYTE *buffer, int length)> IPCDataRecive_Signal;<br /> typedef IPCDataRecive_Signal:原创 2010-07-01 11:34:00 · 217 阅读 · 0 评论 -
IPC
#pragma once#include "boost/signal.hpp"#include "define.h"class IPCHELPER_API INetCommunicate{public: typedef boost::signal IPCDataRecive_Signal; typedef IPCDataRecive_Signal::slot_type IPCDataRecive_Slot; typedef boost::signals::connection IPCDataRecive_C原创 2010-07-01 11:34:00 · 98 阅读 · 0 评论 -
boost signals
n Signals实现了信息源和某些对这些信息的变化感兴趣的实例之间的一对多关系。 这是一种Observer的设计模式,允许同一信号对应多个处理。 包含很多Slot,Slot是信号接受者。template typename Combiner = last_value, typename Group = int, typenameGroupCompare = std::less, typenameSlotFunction = function >class signal : public原创 2010-07-01 11:20:00 · 299 阅读 · 0 评论 -
定时器
计时器: SetTimer(1,500,NULL) 第一个参数为计时器ID号;第二个参数为每隔500毫秒发送一次WM_TIMER消息给OnTimer() ;第三个参数NULL表示计时器只用于发送定时消息而不是用来作为回调函数使用.注:由于硬件定时器的原因, OnTimer()实际间隔时间为555毫秒收到一条WM_TIMER消息.原创 2010-04-16 11:19:00 · 154 阅读 · 0 评论 -
_stdcall
_cdecl(c/c++缺省的,支持变参函数,但其他非c/c++语言不支持) _stdcall(依词义,标准调用,不支持变参)原创 2010-03-23 13:15:00 · 137 阅读 · 0 评论 -
explicit
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。 C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 2 是个默认且隐含的类型转换操作符。 所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的转载 2010-03-09 15:25:00 · 297 阅读 · 0 评论 -
虚析构函数(√)、纯虚析构函数(√)、虚构造函数(X)
虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。 如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。 所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。实际上,很多人这样总结:当且仅转载 2010-03-11 12:24:00 · 276 阅读 · 0 评论 -
C++枚举类型
1、枚举enum的用途浅例 写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rainy等等。 更常见的,打开一个文件可能有三种状态:input, output和append. 典型做法是,对应定义3个常数,即: const int input = 1; con转载 2010-02-22 14:23:00 · 1479 阅读 · 1 评论 -
int转换成长度为4的byte数组,长度为4的byte数组合成一个int.
static int bytes2int(byte[] b) { //byte[] b=new byte[]{1,2,3,4}; int mask=0xff; int temp=0; int res=0; for(int i=0;i res temp=b[i]&mask; res+=temp; } return res; } static byte原创 2010-02-21 08:58:00 · 410 阅读 · 0 评论 -
C++函数后加const的意义
一些成员函数改变对象,一些成员函数不改变对象。例如:int Point::GetY(){ return yVal;} 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象:void Point:: SetPt (int x, int y){ xVal=x; yVal=y;} 为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数的函数原型中加上const说明:转载 2010-02-20 13:03:00 · 279 阅读 · 0 评论 -
常指针与指针常量的区别
常指针与指针常量的区别(转帖) 三个名词虽然非常绕嘴,不过说的非常准确。用中国话的语义分析就可以很方便地把三个概念区分开。 一) 常量指针。常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。在C/C++中,常量指针是这样声明的:原创 2009-11-21 10:53:00 · 2938 阅读 · 3 评论 -
堆栈
在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆:顺序随意栈:后进先出(Last-In/First-Out)编辑本段堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译原创 2009-11-21 10:48:00 · 249 阅读 · 0 评论 -
文件操作
//读取mapping文件 ifstream inFile; inFile.open("C://keyencemapping.txt"); string str; string arrayStr[3]; KeyenceMappingData keyenceMappingData; keyenceMappingHelper.CleanMappingData(); if (inFile.is_open()) { while(!inFile.eof()) { std::getline(inFile,str原创 2010-10-26 10:34:00 · 188 阅读 · 0 评论