zlog.h头文件疑问

发布于 2021-11-22 18:36:58 字数 269 浏览 839 评论 2

@难易 你好,想跟你请教个问题:最近使用vzlog函数时发现代码所在文件名长度最多只能为3,代码跟踪发现是传入的文件名长度不对,我之前传的是sizeof(file)-1,改为strlen(file)就OK了,之所以用前者是因为我看到zlog.h头文件中各种宏定义都是这么传参的。刚看了你最新代码也是这样的,不知道会不是是个问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心欲静而疯不止 2021-11-23 16:59:29

明白了,我是在函数里面使用的vzlog函数,而你是在宏定义里面使用的,在编译期会展开宏并计算出正确长度,函数调用因为传入的是文件名指针就不会这样,所以只能用strlen获取文件长度。实质上是sizeof(字符串字面值) != sizeof(相同字符串指针)的原因。

旧伤慢歌 2021-11-23 06:00:37

在我这边的环境可以没问题,可能是C的预处理器对__FILE__宏处理不一样

gcc -I(zlog.h所在路径) -E xx.c | more

 zlog(zc, "test_hello.c", sizeof("test_hello.c")-1, __func__, sizeof(__func__)-1
, 30, ZLOG_LEVEL_INFO, "hello, zlog");

用strlen不会出错,只是
性能上依赖于编译器的优化,

sizeof我开始这么用是为了保证编译阶段就能获得长度。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文