c 中#define的问题 急

来源:百度知道 编辑:UC知道 时间:2024/06/07 11:37:55
#include <conio.h>
#include <dos.h>
#include <stdio.h>

typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned long DWORD;

/* PCI设备索引。bus/dev/func 共16位,为了方便处理可放在一个WORD中 */
#define PDI_BUS_SHIFT 8
#define PDI_BUS_SIZE 8 1616
#define PDI_BUS_MAX 0xFF
#define PDI_BUS_MASK 0xFF00

#define PDI_DEVICE_SHIFT 3
#define PDI_DEVICE_SIZE 5
#define PDI_DEVICE_MAX 0x1F
#define PDI_DEVICE_MASK 0x00F8

#define PDI_FUNCTION_SHIFT 0
#define PDI_FUNCTION_SIZE 3
#define PDI_FUNCTION_MAX 0x7
#define PDI_FUNCTION_MASK 0x0007

#define MK_PDI(bus,dev,func) (WORD)((bus&PDI_BUS_MAX)<<PDI_BUS_SHIFT | (dev&PDI_DEVICE_MAX)<<PDI_DEVICE_SHIFT | (func&PDI_FUNCTION_MAX) ) 这个怎么解释下 急

举个例子
#define SUM(a,b,c) a+b+c
……
main()
{
int x;
……
x=SUM(1,2,3);//编译器会用1+2+3替代SUM(1,2,3),这条语句相当于x=1+2+3
……
}

同理就可以解释你给出的问题了