3
// 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 でこのような使いやすいツールを知っている人はいますか?

4

3 に答える 3

2

cprotoまたは protoize (GCC の一部) を使用して、関数プロトタイプを生成したり、古いスタイル (K&R) 関数を ANSI 形式に変換したりできます。

于 2011-11-09T17:02:49.293 に答える
0

複数行の文字列を変換したいので、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

ソースファイルごとに。

于 2013-11-09T20:08:45.287 に答える