c - 相对于函数开头的 __LINE__ 宏的等价物
问题描述
在 C/C++ 中,是否有一个宏可以告诉我相对于在其中找到宏的函数的开头的行号,而不是相对于文件的开头?
解决方案
不,但是您可以通过创建线偏移来做一些等效的事情:
int func(char *s)
{ static const int begin_line = __LINE__;
#define func_line (__LINE__ - begin_line)
/* ... */
printf("%s():%d\n", __func__, func_line);
}
输出:
函数():3
请注意,begin_line
与括号放在同一行很重要。如果您想要从零开始的行索引,请随意添加换行符。
在 C ++中,您可以constexpr
使用.static const
begin_line
推荐阅读
- django - request.user 即使用户登录也返回 AnonymousUser
- c - xv6 看不懂这行代码
- node.js - 更新包含图像的表单 - NodeJS
- javascript - body 溢出-y:隐藏,同时保留滚动位置
- flutter - 'RenderObject?' 类型的值 不能分配给“RenderRepaintBoundary”类型的变量
- huggingface-transformers - HuggingFace AttributeError:“str”对象没有属性“to”
- python - 在将时间序列数据转换为其频域时,如何选择要使用的正确频率?
- sql-server - 执行一个视图告诉我我对它的某些功能没有权限
- android - 如何使我的 android 应用程序的源代码难以进行逆向工程?
- docker - 在特定端口上运行 docker 映像