在C++中使用预定义宏

在C++学习中,我们不难发现许多预定义的宏,如:

注意:这些预定于宏完全是由编译器实现的,因此请注意各种平台移植的问题。

直接使用预定义宏:

复制代码
#include <stdio.h>

int main() {
    printf("[File:%s][Fun:%s][Line:%d] show my log\n", __FILE__, __func__, (int)__LINE__);
    printf("[File:%s][Fun:%s][Line:%d] %d + %d = %d\n", __FILE__, __func__, (int)__LINE__, 1, 2, 1 + 2);
}

可见,这么写实在是太长了,对于这种情况,我们可以把这个操作定义为一个宏。

由于需要传递打印的信息,因此这是一个宏函数,若要使用占位符号,则需要遵循变参宏的使用规则。

封装成宏函数:

此处使用不同的宏,表示不通用的日志分类。

复制代码
#include <stdio.h>

#define DEBUG_LOG(fmt, ...)                                                 \
    do {                                                                    \
        printf("Debug:[File:%s][Fun:%s][Line:%d] " fmt, __FILE__, __func__, \
               (int)__LINE__, ##__VA_ARGS__);                               \
    } while (0)

#define INFO_LOG(fmt, ...)                                                 \
    do {                                                                   \
        printf("Info:[File:%s][Fun:%s][Line:%d] " fmt, __FILE__, __func__, \
               (int)__LINE__, ##__VA_ARGS__);                              \
    } while (0)

#define WARNING_LOG(fmt, ...)                                                \
    do {                                                                     \
        printf("Waring:[File:%s][Fun:%s][Line:%d] " fmt, __FILE__, __func__, \
               (int)__LINE__, ##__VA_ARGS__);                                \
    } while (0)

int main() {
    DEBUG_LOG("use debug log\n");
    INFO_LOG("%d + %d = %d\n", 1, 2, 1 + 2);
    WARNING_LOG("%d + %d = %d\n", 1, 2, 4);
}
相关推荐
To_OC21 小时前
LC 994 腐烂的橘子:人人都说是 BFS 入门题,我却写了三遍才过
javascript·算法·leetcode
金銀銅鐵1 天前
[Python] 扩展欧几里得算法
python·数学·算法
To_OC1 天前
LC 200 岛屿数量:经典 DFS 入门题,我第一次写居然连方向都搞错了
javascript·算法·leetcode
郝学胜_神的一滴1 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
To_OC2 天前
LC 128 最长连续序列:别上来就排序,O (n) 解法才是这题的灵魂
javascript·算法·leetcode
05Kevin2 天前
lk每日冒险题--数据结构6.27
算法
To_OC3 天前
从一次栈溢出报错说起,我把递归彻底扒明白了
javascript·算法·程序员
千纸鹤安安3 天前
千问Qwen-AgentWorld来了:一个语言模型搞定七大Agent场景,GPT-5.4都输了
算法