011 预处理 #define

/*
目录:
   一 #define和typdef    
   二 宏函数
*/

一 #define和typdef  

#define    原理: 编译器转换,书写方便,便于程序维护。
typedef     原理: 用于类型重定义
// 注意区别 : #define typedef

#include "stdafx.h"
#include <typeinfo.h>

#define PDATA int *

typedef struct SNode
{
    int nNum;
    int data;
    SNode *pNext;
}SNode, *pSNode;


int main(int argc, char *argv[])
{
    PDATA dNum1 = NULL, dNum2 = 0;        // 数据类型 : dNum1 - 指针; 数据类型 : dNum2 - int
    printf("%s
", typeid(dNum1).name());
    printf("%s
", typeid(dNum2).name());
    
    pSNode sNum1 = NULL, sNum2 = NULL;    // 数据类型 : sNum1 - 指针; 数据类型 : sNum2 - 指针
    printf("%s
", typeid(sNum1).name());
    printf("%s
", typeid(sNum2).name());

    return 0;
}
/*
int *
int
struct SNode *
struct SNode *
*/
#include "stdafx.h"
#include <typeinfo.h>

#define PDATA int *
typedef int* PNODE;

int main(int argc, char *argv[])
{
    PDATA nNum1, nNum2;
    printf("nNum1 = %s
", typeid(nNum1).name());
    printf("nNum2 = %s
", typeid(nNum2).name());

    PNODE nNum3, nNum4;
    printf("nNum3 = %s
", typeid(nNum3).name());
    printf("nNum4 = %s
", typeid(nNum4).name());
    return 0;
}
/*
nNum1 = int *
nNum2 = int
nNum3 = int *
nNum4 = int *
*/

二 宏函数

#include "stdafx.h"
#include <typeinfo.h>

#define max(i, j) i > j ? i : j

int main(int argc, char *argv[])
{
    int nNum = 3; 
    int nNum2 = 4;

    int nMax = max(nNum, nNum2);
    printf("%d
", nMax);

    return 0;
}
/*
4
*/
原文地址:https://www.cnblogs.com/huafan/p/11518670.html