我创建了一个用于错误跟踪的宏。这是一个简化版本:
#include <stdio.h>
#define ERR(...) \
printf("error @ %d\n", __LINE__)
int main()
{
return ERR(1, /* line 7 */
2, /* line 8 */
3); /* line 10 */
}
执行时,它会打印:
error @ 10
但是,要将打印的行号与grep
输出 ( grep -n ERR test.c
) 匹配,我需要ERR
字符串 ( line 7
) 的行号。
这样的事情甚至可能吗?有任何想法吗?
附加说明:宏应该看起来像一个函数调用(所以我可以这样做return ERR(...);
)。编译器是 GCC 版本 4.4.5。可以使用 C99 + GNU 扩展。