【发布时间】:2012-11-09 18:25:57
【问题描述】:
我创建了一个用于错误跟踪的宏。 这是一个简化的版本:
#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 扩展。
【问题讨论】: