您的位置:首页 > 科技 > 能源 > 义乌专业做网站的公司_室内设计基础知识点_搜资源_seo行业

义乌专业做网站的公司_室内设计基础知识点_搜资源_seo行业

2025/3/28 11:43:24 来源:https://blog.csdn.net/djdjiejsn/article/details/146327753  浏览:    关键词:义乌专业做网站的公司_室内设计基础知识点_搜资源_seo行业
义乌专业做网站的公司_室内设计基础知识点_搜资源_seo行业

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

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

在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的使用在看,一步一步验证才发现是多加了一个续行符

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com