// 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;
}
ご覧のとおり、K&R スタイルでは、変数の型は中かっこではなく新しい行で宣言されます。K&R 関数宣言を ANSI 関数宣言に自動的に変換する方法は? Linux でこのような使いやすいツールを知っている人はいますか?
cprotoまたは protoize (GCC の一部) を使用して、関数プロトタイプを生成したり、古いスタイル (K&R) 関数を ANSI 形式に変換したりできます。
複数行の文字列を変換したいので、perlを検討する必要があります
あなたが持っている
void old_style( c , a ) char c; int a; { /* some multiline code */ }
そして持っている必要があります
void old_style( char c, int a) {}
そう
perl -i.bkp -nle 's/\((void|int|char|float|long) [a-zA-Z0-9_-]*\)([a-zA-Z0-9_-] ?,[a-zA-Z0-9_-] ?)\(.*{\)/\1(\2)/g'
またはそのようなものは、トリックを行うでしょう。
試してみて、の出力をコメントに投稿すると、これに正しい正規表現に取り組むのが簡単になります
diff file.c file.c.bkp
ソースファイルごとに。