我有几个 C 源跟踪语句,例如
TRACE(23, "abc");
TRACE(24, "def");
数字 23 和 24 是从自动生成的列表中计数的标识符,每行包含一个字符串
...
"abc"
"def"
...
“abc”位于第 23 行,因此我在相应的跟踪语句中写入 23。
预处理器生成我想要的输出
trace(23);
trace(24);
我认为应该可以以我只写的方式自动化它
TRACE("abc");
TRACE("def");
在 C 预处理期间,我想自动将字符串与生成的文件的相应行号交换,以便进入预处理器输出
trace(23);
trace(24);
我可以编写一个函数,返回字符串“abc”的第 23 行,但我需要在预处理过程中激活它。有任何预处理器钩子(Hook)或其他想法吗?
最佳答案
<小时/>
预处理器提供了 automagic 宏 __FILE__
和 __LINE__
(以及其他一些),您可以使用它们:
#include <stdio.h>
#define TRACE(m) fprintf(stderr, "%s,%d: %s\n", __FILE__ , __LINE__, m)
int main(void)
{
int a;
if(a) TRACE("a");
else TRACE("no");
TRACE("returning");
return 0;
}
关于c - 如何在 C 预处理期间用索引交换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53637440/