【Json—RPC框架】:宏定义不受命名空间限制,续行符的错误使用造成的bug

devtools/2025/3/18 13:15:59/

为什么不受命名空间的限制?

宏处理在预处理阶段, 预处理在编译之前,编译才进行语法分析,语义分析。命名空间也只能限制这部分。

在Json-RPC框架的实现中,遇到如下问题。一开始以为是在实现日志宏的时候,有其他原因造成不能使用,后面还是发现只是多一个换行符造成的错误。

首先宏定义不受C++中命名空间的限制。

宏定义,如果在有地方用到了宏定义,那么在预处理阶段就会进行宏替换。

kimi的解释如下:

好像找到了答案:

宏处理在预处理阶段, 预处理在编译之前,编译才进行语法分析,语义分析。命名空间也只能限制这部分。

验证代码如下:(下面的日志宏也可以验证)

//测试关于宏定义受不受命名空间影响
namespace AAA{#define multiply(a) (2*a)
}int main()
{std::cout<<multiply(2)<<std::endl;return 0;
}

这没问题,可以正常访问。

但是好像似乎不怎么规范,但是这个宏用于是当前命名空间的其他函数的调试,用于当前命名空间的其他部分好像还行。


日志宏的实现,用于调试代码,定位错误。

namespace Json_RPC
{#define LOG(ragameter,...){\time_t t=time(NULL);\struct tm* local=localtime(&t);\char time_buffer[32]={0};\strftime(time_buffer,31,"%m-%d %T",local);\fprintf(stdout,"[%s][%s:%d]" ragameter "\n",time_buffer,__FILE__,__LINE__,##__VA_ARGS__);\}
}

我以为是warning,就没注意。

然后一直抓着下面LOG的使用在看,一步一步验证才发现是多加了一个续行符


http://www.ppmy.cn/devtools/168062.html

相关文章

python-websocket压力测试

一.websocket简介及安装 使用pip命令安装websocket库&#xff1a;pip install websocket-client websocket.WebSocketApp 是对 websocket.WebSocket 的封装&#xff0c;支持自动定时发送 PING 帧&#xff0c;支持事件驱动方式的数据帧接收&#xff0c;可用于长期的 WebSocket…

TypeScript接口 interface 高级用法完全解析

TypeScript接口 interface 高级用法完全解析 mindmaproot(TypeScript接口高级应用)基础强化可选属性只读属性函数类型高级类型索引签名继承与合并泛型约束设计模式策略模式工厂模式适配器模式工程实践声明合并类型守卫装饰器集成一、接口核心机制深度解析 1.1 类型兼容性原理 …

Maven学习

Maven是用来构建项目&#xff0c;管理依赖的 Maven项目结构 main主要写实现代码&#xff0c;test是写测试代码不会被打包 resource放静态资源&#xff0c;webapp存放web开发内容。 pom文件包括项目版本号内容以及相关配置以及后续依赖 Maven依赖导入&#xff0c;就是直接写…

【通义千问】蓝耘智算 | 智启未来:蓝耘MaaS×通义QwQ-32B引领AI开发生产力

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能&#xff08;AI&#xff09;通过算法模拟人类智能&#xff0c;利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络&#xff08;如ChatGPT&…

音视频入门基础:RTCP专题(1)——RTCP官方文档下载

一、引言 实时传输控制协议&#xff08;Real-time Transport Control Protocol或RTP Control Protocol或简写RTCP&#xff09;是实时传输协议&#xff08;RTP&#xff09;的一个姐妹协议。RTCP由《RFC 3550》定义&#xff08;取代废弃的《RFC 1889》&#xff09;。RTP使用一个…

【AI 加持下的 Python 编程实战 2_04】第三章:GitHub Copilot 在 Python 函数设计中的正确打开方式(含本地实操)

【全新第二版《Learn AI-assisted Python Programming》封面】 写在前面 本篇是全书的第一处精华内容&#xff0c;从完全零基础小白的角度详细介绍了 Copilot 在 Python 函数设计中的用法&#xff0c;包括提示词的正确写法、基于 AI 工具的函数设计基本工作流程等&#xff0c;虽…

人工智能中神经网络是如何进行学习的

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 引言神经网络的学习过程1. 前向传播2. 计算损失3. 反向传播反向传播的步骤 4. 参数更新5. 重…

python-leetcode 54.全排列

题目&#xff1a; 给定不含重复数字的数组nums,返回其所有可能的全排列&#xff0c;可以按任意顺序返回答案 回溯法 一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解&#xff08;或者至少不是最后一个解&#xff09;&#xff0c;回溯算法会通…