admin管理员组文章数量:1037775
【Json—RPC框架】:宏定义不受命名空间限制,续行符的错误使用造成的bug
为什么不受命名空间的限制?
宏处理在预处理阶段, 预处理在编译之前,编译才进行语法分析,语义分析。命名空间也只能限制这部分。
在Json-RPC框架的实现中,遇到如下问题。一开始以为是在实现日志宏的时候,有其他原因造成不能使用,后面还是发现只是多一个换行符造成的错误。
首先宏定义不受C++中命名空间的限制。
宏定义,如果在有地方用到了宏定义,那么在预处理阶段就会进行宏替换。
kimi的解释如下:
好像找到了答案:
宏处理在预处理阶段, 预处理在编译之前,编译才进行语法分析,语义分析。命名空间也只能限制这部分。
验证代码如下:(下面的日志宏也可以验证)
代码语言:javascript代码运行次数:0运行复制//测试关于宏定义受不受命名空间影响
namespace AAA{
#define multiply(a) (2*a)
}
int main()
{
std::cout<<multiply(2)<<std::endl;
return 0;
}
这没问题,可以正常访问。
但是好像似乎不怎么规范,但是这个宏用于是当前命名空间的其他函数的调试,用于当前命名空间的其他部分好像还行。
代码语言:javascript代码运行次数: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的使用在看,一步一步验证才发现是多加了一个续行符。
【Json—RPC框架】:宏定义不受命名空间限制,续行符的错误使用造成的bug
为什么不受命名空间的限制?
宏处理在预处理阶段, 预处理在编译之前,编译才进行语法分析,语义分析。命名空间也只能限制这部分。
在Json-RPC框架的实现中,遇到如下问题。一开始以为是在实现日志宏的时候,有其他原因造成不能使用,后面还是发现只是多一个换行符造成的错误。
首先宏定义不受C++中命名空间的限制。
宏定义,如果在有地方用到了宏定义,那么在预处理阶段就会进行宏替换。
kimi的解释如下:
好像找到了答案:
宏处理在预处理阶段, 预处理在编译之前,编译才进行语法分析,语义分析。命名空间也只能限制这部分。
验证代码如下:(下面的日志宏也可以验证)
代码语言:javascript代码运行次数:0运行复制//测试关于宏定义受不受命名空间影响
namespace AAA{
#define multiply(a) (2*a)
}
int main()
{
std::cout<<multiply(2)<<std::endl;
return 0;
}
这没问题,可以正常访问。
但是好像似乎不怎么规范,但是这个宏用于是当前命名空间的其他函数的调试,用于当前命名空间的其他部分好像还行。
代码语言:javascript代码运行次数: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的使用在看,一步一步验证才发现是多加了一个续行符。
本文标签: JsonRPC框架宏定义不受命名空间限制,续行符的错误使用造成的bug
版权声明:本文标题:【Json—RPC框架】:宏定义不受命名空间限制,续行符的错误使用造成的bug 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1748230614a2272660.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论