1、防止头文件被重复包含
#ifndef COMDEF_H
#define COMDEF_H
//头文件内容
#endif
2、求最大值和最小值
#define MAX( x, y ) ( ((x) > (y)) ? (x) : (y) )
#define MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )
3、求数组元素个数
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
4、得到指定地址上的一个字节或字
#define B_MEM(a) (*((byte *)(a)))
#define W_MEM(a) (*((word *)(a)))
5、获取变量的地址
#define B_ADDR(var) ((byte *)(void *) &(var))
#define W_ADDR(var) ((word *)(void *) &(var))
6、获取结构体成员的偏移量
#define offsetof(type, field) ( (size_t)& (((type *)0)->field) )
7、跟踪调试:__FILE__, __FUNCTION__, __LINE__
#include <stdio.h>
#include <string.h>
// 定义日志级别枚举
enum LogLevel
{
DEBUG,
INFO,
WARN,
ERROR,
FATAL
};
// 全局日志级别变量定义
enum LogLevel globalLogLevel = INFO;
#define LOG1(level, message) do { \
if (level >= globalLogLevel) { \
printf("[%d] FILE:%s FUNCTION:%s LINE:%d %s\n", level, __FILE__, __FUNCTION__, __LINE__, message); \
} \
} while (0)
int main(void)
{
LOG1(DEBUG, "DEBUG message");
LOG1(INFO, "INFO message");
LOG1(WARN, "WARN message");
LOG1(ERROR, "ERROR message");
LOG1(FATAL, "FATAL message");
}
__FILE__, __FUNCTION__, __LINE__
浙公网安备 33010602011771号