#define和typedef在windows上的应用

typedef的应用

typedef是在计算机编程语言中用来为复杂的声明定义简单的别名。
下面的代码定义了一些常见类型的别名

typedef int                 INT;
typedef unsigned int        UINT;
typedef unsigned int        *PUINT;

windows通常定义结构体的同时会定义结构体的别名,下面的代码定义了tagPAINTSTRUCT结构体,同时给了定义PAINTSTRUCT别名以及指针类型的别名PPAINTSTRUCT等。

typedef struct tagPAINTSTRUCT {
    HDC         hdc;
    BOOL        fErase;
    RECT        rcPaint;
    BOOL        fRestore;
    BOOL        fIncUpdate;
    BYTE        rgbReserved[32];
} PAINTSTRUCT, *PPAINTSTRUCT, *NPPAINTSTRUCT, *LPPAINTSTRUCT;

#define的应用

1. 简单的define定义
#define MAX_PATH          260
2. define定义函数
 #define max(a,b)            (((a) > (b)) ? (a) : (b))
3. #和##操作符

 ##用于连接字符,windows的应用之一就是TEXT定义。
TEXT("Hello")等价于__TEXT("Hello"),__TEXT("Hello")等价于L"Hello"。

#define TEXT(quote) __TEXT(quote)
#define __TEXT(quote) L##quote

  #用于给字符加双引号,MKSTR(HELLO C++)等价于"HELLO C++"

#define MKSTR( x ) #x
4.多行定义

"afxmsg.h"下ON_WM_PAINT()宏定义如下。

 #define  ON_WM_PAINT() \ 
    { WM_PAINT,  0 ,  0 ,  0 , AfxSig_vv, \
    (AFX_PMSG)(AFX_PMSGW) \
    (static_cast <   void  (AFX_MSG_CALL CWnd:: * )( void )  >  (  &     ThisClass :: OnPaint)) } ,
5.条件编译

CreateWindow在Unicode和MBCS下执行不同的函数。

#ifdef UNICODE
#define CreateWindow  CreateWindowW
#else
#define CreateWindow  CreateWindowA
#endif // !UNICODE
6.预编译宏定义

c++提供了一些预编译宏定义,__LINE__,__FILE__,__DATE__,__TIME__。

#include <iostream>
using namespace std;
int main () {
   cout << "Value of __LINE__ : " << __LINE__ << endl;
   cout << "Value of __FILE__ : " << __FILE__ << endl;
   cout << "Value of __DATE__ : " << __DATE__ << endl;
   cout << "Value of __TIME__ : " << __TIME__ << endl;
   return 0;
}

编译输出结果如下

Value of __LINE__ : 5
Value of __FILE__ : main.cpp
Value of __DATE__ : Oct 21 2016
Value of __TIME__ : 01:01:48

转载于:https://www.cnblogs.com/lkpp/p/typedef-define.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值