直接上代碼,這次歸納了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::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;
}