Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C预处理期间用索引交换字符串_C_String_Indexing_C Preprocessor - Fatal编程技术网

如何在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预处理过程中,我希望自动将字符串与生成文件的

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