有两个程序protoize 和unprotoize 可以在有原型和无原型的函数定义和声明之间相互转换。
这些程序不能完全完成“经典” C 和ANSI C之间的转换。
这些程序是FSF 的GNU C 编译器发布的一部分; 参加问题18.3。
GNU GhostScript 包提供了一个叫ansi2knr 的程序。
从ANSI C 向旧式代码转化之前, 请注意这样的转化不能总是正确和自动。
ANSI C 引入了K&R C 没有提供的诸多新功能和复杂性。
你得特别小心有原型的函数调用; 也可能需要插入明确的类型转换。
参加问题11.4 和11.28。
存在几个类型生成器, 其中多数都是对lint 的修改。
1992 年3 月在comp.sources.misc 上发布了一个叫做CPROTO 的程序。
还有一个叫做“cextract” 的程序。
很多供货商都会随他们的编译器提供类似的小工具。
参见问题18.18。
但在为“窄” 参数的旧函数生成原型可要小心; 参加问题11.4。