prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 11.31

有人有工具可以将旧式 C 程序转换为 ANSI C,或反之亦然,或自动生成原型吗?


有两个程序,protoize 和 unprotoize,可以在原型和“旧式”函数定义和声明之间进行双向转换。(这些程序处理“经典” C 和 ANSI C 之间的完整翻译。)这些程序是 FSF 的 GNU C 编译器发行版的一部分;请参阅问题 18.3

unproto 程序(/pub/unix/unproto5.shar.Z 在 ftp.win.tue.nl 上)是一个过滤器,它位于预处理器和下一个编译器传递之间,可以实时将大多数 ANSI C 转换为传统的 C。

GNU GhostScript 包附带一个名为 ansi2knr 的小程序。

在将 ANSI C 转换回旧式之前,请注意,这种转换并非总是可以同时安全且自动地进行。ANSI C 引入了 K&R C 中不存在的新特性和复杂性。您尤其需要注意带原型的函数调用;您可能需要插入显式转换。另请参阅问题 11.311.29a

存在几个原型生成器,许多是对lint的修改。一个名为 CPROTO 的程序于 1992 年 3 月发布到 comp.sources.misc。还有一个名为“cextract”的程序。许多供应商会在其编译器中提供此类简单实用程序。另请参阅问题 18.16。(但生成带有“狭窄”参数的旧函数的原型时要小心;请参阅问题 11.3。)


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管