我正在使用复杂的 C 代码,其中包含许多编译选项。这
使得代码很难阅读。我想生成一份反映代码的副本
它实际编译的方式。我使用“unifdef”得到了很好的结果
实用程序,直到最近我才知道。但我很困惑为什么这么难
调用,我想知道我是否遗漏了一些东西。
考虑这个例子:
#ifdef A
printf("A\n");
#endif
#ifdef B
printf("B\n");
#endif
如果您使用“unifdef -DA junk.c”调用 unifdef,您将得到:
printf("A\n");
#ifdef B
printf("B\n");
#endif
因为你没有告诉unifdef B 是未定义的,所以它没有把它取出来。
我希望该实用程序的行为使得当我说 unifdef -DA 时,我会得到:
printf("A\n");
这对应于 C 预处理器实际执行的操作:
省略任何未定义的分支。
为了通过 unifdef 获得这种行为,我似乎需要使用
“unifdef -DA -UB junk.c”,明确告诉它 B 未定义。
尽管也许我错过了一种更简单的调用它的方法。
我编写了一个 python 脚本来生成所需的 -D 和 -U 的长列表
我正在使用的代码的 Makefile 中的标志(通常每个例程 80 个)。
结果非常好。但我想知道这样的脚本是否
其实是有必要的。
另一个实用程序(sunifdef?coan?)也可能具有我想要的行为
已经内置;如果有,请提及。
The coan http://coan2.sourceforge.net/实用程序可以满足您的需要-m
flag:
$ coan source -DA -m test.c
printf("A\n");
从手册页:
-m, --implicit
Assume that any symbol that is not --define-ed is implicitly
--undef-ed.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)