我正在使用第三方C文件,该文件在下面具有细分。
static void
random_vector(gsl_vector * v, gsl_rng * r)
{
size_t i;
for (i = 0; i < v->size; ++i)
{
double vi = __x0 * gsl_rng_uniform(r) - __x1; /* in [-1,1] */
gsl_vector_set(v, i, vi);
}
}
#include "test_impulse.c"
#include "test_gaussian.c"
#include "test_median.c"
#include "test_rmedian.c"
是否有一种方法,例如gcc选项,可以自动将原始C文件转换为包含“ test_impulse.c”等的文件?手动执行此操作很容易,但是我将不得不处理许多此类情况。
[更新]因为C文件还包含一些头文件(.h文件),所以我不需要将它们放在转换后的文件中。因此,如下面的注释中所建议的那样,使用gcc“ -E”选项是不可行的。
我的解决方案有一些警告,但一般来说,当所有行都#
以第一个字符结尾c"
并且以任何行开头时,$
您可能会有一个看起来像这样的小管道:
sed -E 's/^#(.*[^c]")$/$\1/' ORIGINAL | \
gcc -E - | \
sed -E 's/^\$(.*)$/#\1/' > FINAL
这是什么,它将在所有以井号标签开头并以结束的行上用美元符号替换井号c"
。然后执行gcc -E
,然后将所有美元符号还原为主题标签。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句