如何在C预处理期间用索引交换字符串
我有几个C源跟踪语句,比如如何在C预处理期间用索引交换字符串,c,string,indexing,c-preprocessor,C,String,Indexing,C Preprocessor,我有几个C源跟踪语句,比如 TRACE(23, "abc"); TRACE(24, "def"); 数字23和24是从自动生成的列表中计数出来的标识符,每行包含一个字符串 ... "abc" "def" ... “abc”在第23行,因此我在相应的trace语句中写23 预处理器生成我想要的输出 trace(23); trace(24); 我认为应该有可能以我只写的方式实现自动化 TRACE("abc"); TRACE("def"); 在C预处理过程中,我希望自动将字符串与生成文件的
TRACE(23, "abc");
TRACE(24, "def");
数字23和24是从自动生成的列表中计数出来的标识符,每行包含一个字符串
...
"abc"
"def"
...
“abc”在第23行,因此我在相应的trace语句中写23
预处理器生成我想要的输出
trace(23);
trace(24);
我认为应该有可能以我只写的方式实现自动化
TRACE("abc");
TRACE("def");
在C预处理过程中,我希望自动将字符串与生成文件的适当行号交换,以便进入预处理器输出
trace(23);
trace(24);
我可以编写一个函数,返回字符串“abc”的行号23,但我需要在预处理过程中激活它。是否有任何预处理器挂钩或其他想法?预处理器提供automagic宏
\uuuuuuuuuuuu文件
和\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
#包括
#定义跟踪(m)fprintf(标准,“%s,%d:%s\n”、_文件、_行、_uu、m)
内部主(空)
{
INTA;
如果(a)跟踪(“a”);
其他跟踪(“否”);
跟踪(“返回”);
返回0;
}
我现在有了一个想法:让预处理器生成这个输出:
trace("abc");
trace("def");
然后编写一个工具(即带有awk的bash脚本),用生成的列表文件中的行号交换字符串:
...
"abc"
"def"
...
最后让编译器完成他的工作。我对它不是很满意,因为它需要针对每个编译器进行调整。有更好的主意吗?请详细说明。“我有资料来源”,请举例说明。“生成的文件”请显示。“我想……”请显示一些示例输入所需的输出。另外,请描述您尝试了什么,以展示您自己的研究成果。也许你可以展示你所做的事情,这有点像但不是你想要的。通常尽量避免“这里有需求,请给出代码”的印象。你这样做的目的是什么?编译器宏\uuuu LINE\uuuu
或者\uuuu FILE\uuuuu
可以帮助实现这些功能吗?它是非常小的嵌入式系统的软件跟踪器。跟踪字符串未进入目标。它们由PC工具动态加载。目标发送一个23,主机知道它是“abc”。我知道\uuuuuu LINE\uuuuuu
和\uuuu文件\uuuuuuu
,但我不知道他们在这种情况下如何帮助我。
...
"abc"
"def"
...