C++中宏的使用技巧

来源:互联网 发布:大连育知同创学费 编辑:程序博客网 时间:2024/06/04 19:14

都是常用技巧,经常用C++的应该都会注意到一两条,为综合整理,非个人独创,从开源代码以及书本论文中抄过来的,数目链接http://blog.csdn.net/iuhsihsow/article/details/7222093如有雷同,纯属巧合。


直接上代码,这次归纳了6点

// Maro.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>#include <iostream>#include <string>using namespace  std;// 宏的用法// 1.因为宏是在编译时进行简单的替换,所以很多时候使用宏在突出//   重点参数的同时,也会提高效率。#define MAXHEIGHT  100.0// 不过自定义单位一般使用typedeftypedef int SYSINT;// 2.短小实用的语句#define SAFE_DELETE(p){if(p) delete p; p = NULL;}#define SAFE_RELEASE(p){while(p->Release()>0); p = NULL;}// 3.类的导出的声明,因为编译时会报错,所以先全部注释掉//#ifdef MODULE_EXPORTS//#define MODULE_API __declspec(dllexport)//#else//#define MODULE_API __declspec(dllimport)//#ifdef_DEBUG//#pragma comment(lib, "Moduled.lib")//#else//#pragma comment(lib, "Module.lib")//#endif//#endif// 4.一些编译时的条件语句#ifndef _WIN32_WINNT            // 指定要求的最低平台是 Windows Vista。#define _WIN32_WINNT 0x0600     // 将此值更改为相应的值,以适用于 Windows 的其他版本。#endif// 5.实用的小函数// 例如计算某函数的运行时间#define BEGIN_TIME\UINT start = GetTickCount();#define END_TIME(total)\total = GetTickCount() - start;\//当然也可以#define USE_TIME(used, fuc)\UINT begin1 = GetTickCount();\fuc;\used = GetTickCount() - begin1;\// 6.定义基类,派生类的接口,这样可以减少修改量,突出接口 ##表示连接#define INTERFACE_Creature(terminal) \public: \virtual void SetName(const string& strName)##terminal\virtual bool GetName(string &strName) ##terminal#define BASE_CreatetureINTERFACE_Creature(=0;)#define Divd_CreatetureINTERFACE_Creature(;)class BaseClass{BASE_Createture;};class DivdClass : public BaseClass{Divd_Createture;};bool DivdClass::GetName(string& strName){return true;}void DivdClass::SetName(const string& strName){}void Dosth(int time = 500){Sleep(time);}int _tmain(int argc, _TCHAR* argv[]){//1double dLength = 50.0;if (dLength > MAXHEIGHT){// do sth}//2double *p = new double[100];SAFE_DELETE(p);//3//略//4#ifdef DOSTH//DO STH#endif//5int useTime;//我们可以这样BEGIN_TIMEDosth();END_TIME(useTime);//还可以这样USE_TIME(useTime, Dosth())printf("Used time is %d\n", useTime);//6BaseClass *pD = new DivdClass;pD->SetName("test");SAFE_DELETE(pD);// 学而时习之,不亦说乎return 0;}



原创粉丝点击