gpt4 book ai didi

c - 相对于函数开头的 __LINE__ 宏的等价物

转载 作者:行者123 更新时间:2023-12-04 11:46:13 37 4
gpt4 key购买 nike

在 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);
}

输出:

func():3

请注意,begin_line 与括号放在同一行很重要。如果您想要从零开始的行索引,请随意添加换行符。

在 C++ 中,您可以使用 constexpr 而不是 static const 来对 begin_line 进行编译时评估。

关于c - 相对于函数开头的 __LINE__ 宏的等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60420033/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com