如何将 K&R 函数声明自动转换为 ANSI 函数声明?
// K&R syntax
int foo(a, p)
int a;
char *p;
{
return 0;
}
// ANSI syntax
int foo(int a, char *p)
{
return 0;
}
正如您所看到的,在 K&R 风格中,变量的类型是在新行而不是大括号中声明的。如何将 K&R 函数声明自动转换为 ANSI 函数声明?有谁知道Linux下有这么好用的工具吗?
// K&R syntax
int foo(a, p)
int a;
char *p;
{
return 0;
}
// ANSI syntax
int foo(int a, char *p)
{
return 0;
}
As you see, in K&R style, the types of variables are declared in new lines instead of in the braces. How to convert a K&R function declaration to an ANSI function declaration automatically? Does anybody know such an easy-to-use tool in Linux?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用 cproto 或 protoize(GCC 的一部分)生成函数原型或转换旧样式(K&R)函数转换为 ANSI 格式。
You can use cproto or protoize (part of GCC) to generate function prototypes or convert old style (K&R) functions to ANSI format.
我的 gcc 安装既没有 cproto 也没有 mkproto。但我确实有 Vim,并且我找到了一个全局替代品来一次执行一个参数...
其中记录的子表达式是:
重复此操作,直到文件中不再有匹配项。请注意,该模式假定 K&R 函数声明位于一行上,后面是连续行上的各个参数声明。
该替代品的两个应用程序成功处理:
进入:
My gcc installation had neither cproto nor mkproto. But I did have Vim and I figured out a global substitute to do this one parameter at a time...
where the recorded subexpressions are:
Repeat until no more matches in the file. Note, the pattern presumes the K&R function declaration is on one line, followed by individual parameter declarations on successive lines.
Two applications of this substitute successfully processes:
into:
由于您想转换多行字符串,因此您应该考虑
拥有
并且必须拥有
Perl So
或类似的东西,就可以解决问题。
的输出,那么解决正确的正则表达式会更容易。
如果您尝试一下并在评论中发布每个源文件
Since You wanna convert a multiline string, you chould consider perl
you have
and must have
So
or something like it, would do the trick.
It would be easier to tackle down the correct regex to this if you try it out and post in comments the output of
for each of your source files.
,您还可以在 C 文件定义中粘贴旧的 K&R 代码。
罗伯特的另一个答案 a> 在因“仅链接”答案而被删除之前包含以下(有用)信息:
该网站拥有两个版本的“mkproto”——1989-09-07 的
MKPROTO.ZIP
和 1992-06-27 的MKPROTOB.ZIP
。您必须在托管站点“程序员之角”注册才能下载文件。这些文件出现在可下载的长页面的大约 2/3 处。You then could also paste over the old K&R code in the C file definition if desired.
Another answer by Robert contained the following (useful) information before it was deleted for being a 'link-only' answer:
The site hosts two versions of "mkproto" —
MKPROTO.ZIP
dated 1989-09-07 andMKPROTOB.ZIP
dated 1992-06-27. You have to register with the host site, The Programmer's Corner, to download the files. The files appear about 2/3 of the way down a long page of possible downloads.