gpt4 book ai didi

c - 如何在 C 预处理期间用索引交换字符串

转载 作者:行者123 更新时间:2023-11-30 14:44:02 25 4
gpt4 key购买 nike

我有几个 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/

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