当前位置:编程学习 > C/C++ >>

C++中宏的使用技巧

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


[cpp]
// Maro.cpp : 定义控制台应用程序的入口点。  
//  
 
#include "stdafx.h"  
#include <Windows.h>  
#include <iostream>  
#include <string>  
using namespace  std; 
 
// 宏的用法  
 
// 1.因为宏是在编译时进行简单的替换,所以很多时候使用宏在突出  
//   重点参数的同时,也会提高效率。  
#define MAXHEIGHT  100.0  
// 不过自定义单位一般使用typedef  
typedef 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_Createture     INTERFACE_Creature(=0;)  
#define Divd_Createture     INTERFACE_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[]) 

    //1  
    double dLength = 50.0; 
    if (dLength > MAXHEIGHT) 
    { 
        // do sth  
    } 
 
    //2  
    double *p = new double[100]; 
    SAFE_DELETE(p); 
 
    //3  
    //略  
 
    //4  
#ifdef DOSTH  
    //DO STH  
#endif  
     
    //5  
    int useTime; 
//我们可以这样  
    BEGIN_TIME 
        Dosth(); 
    END_TIME(useTime); 
//还可以这样  
    USE_TIME(useTime, Dosth()) 
    printf("Used time is %d\n", useTime); 
 
    //6  
    BaseClass *pD = new DivdClass; 
    pD->SetName("test"); 
    SAFE_DELETE(pD);    // 学而时习之,不亦说乎  
    return 0; 

// Maro.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <string>
using namespace  std;

// 宏的用法

// 1.因为宏是在编译时进行简单的替换,所以很多时候使用宏在突出
//   重点参数的同时,也会提高效率。
#define MAXHEIGHT  100.0
// 不过自定义单位一般使用typedef
typedef 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_Createture  INTERFACE_Creature(=0;)
#define Divd_Createture  INTERFACE_Creature(;)

class BaseClass
{
 BASE_Createture;
};

class DivdClass : public BaseClass
{
 Divd_Createture;
};

bool DivdClass::G

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,