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");
}

 

posted on 2025-02-27 20:40  轩~邈  阅读(21)  评论(0)    收藏  举报