inline还是macro

简介:

inline还是macro?

这个问题实际上很简单,inline是函数,当你需要写一个函数的时候就用inline。
而macro呢?它有超越函数的能力,它可以传递无类型的参数、可以拼装模板化的代码、甚至可以拼装token。这些东西都是函数,甚至C++模板都无法办到的。

顺便贴一段用macro写的打印log的代码吧 :)

#define _ALERT 0
#define _CRIT 1
#define _ERR 2
#define _WARNING 3
#define _NOTICE 4
#define _INFO 5
#define _DEBUG 6

#define DP_ALERT_TEXT "ALERT:"
#define DP_CRIT_TEXT "CRITICAL:"
#define DP_ERR_TEXT "ERROR:"
#define DP_WARNING_TEXT "WARNING:"
#define DP_NOTICE_TEXT "NOTICE:"
#define DP_INFO_TEXT "INFO:"
#define DP_DEBUG_TEXT "DEBUG:"

static int debug_level;

#define DEBUG(lev, fmt, args...) \
do { \
if (debug_level > (lev)){ \
fprintf(stderr, "%d [%d] " DP##lev##_TEXT fmt, time(), getpid(), __FUNCTION__, ## args); \
} \
}while(0)

#define LM_ALERT(fmt, args...) DEBUG(_ALERT, fmt, ##args)
#define LM_CRIT(fmt, args...) DEBUG(_CRIT, fmt, ##args)
#define LM_ERR(fmt, args...) DEBUG(_ERR, fmt, ##args)
#define LM_WARN(fmt, args...) DEBUG(_WARNING, fmt, ##args)
#define LM_NOTICE(fmt, args...) DEBUG(_NOTICE, fmt, ##args)
#define LM_INFO(fmt, args...) DEBUG(_INFO, fmt, ##args)
#define LM_DBG(fmt, args...) DEBUG(_DEBUG, fmt, ##args)


目录
相关文章
|
XML NoSQL Redis
如何检测出redis的哪些key在消耗内存
如何检测出redis的哪些key在消耗内存
248 0
|
消息中间件 存储 SQL
网易云音乐基于 Flink + Kafka 的实时数仓建设实践
本文由网易云音乐实时计算平台研发工程师岳猛分享,主要从以下四个部分将为大家介绍 Flink + Kafka 在网易云音乐的应用实战: 背景、Flink + Kafka 平台化设计、Kafka 在实时数仓中的应用、问题 & 改进。
网易云音乐基于 Flink + Kafka 的实时数仓建设实践
|
4天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
13天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
8天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
541 206
|
3天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
220 138
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
737 54
下一篇
oss云网关配置