1

私はCコードのほとんどすべてのセマンティック要素間のスペースが好きです。

したがって、私は好む

if ( ( foo = bar ( arg1, arg2, arg3 ) ) ==  NULL ) {
    printf ( "Error 42" );
}

if((foo=bar(arg1,arg2,arg3))==NULL){
    printf("Error 42");
}

これを行うことができるCビューティファイア(unixプラットフォーム)はありますか?
関数マクロをそのままにしておく必要があるのは、真剣に賢い美化者です。

4

4 に答える 4

4
indent -prs -br -i 4 file

これを回します:

#define f(x) ((x)+(x))

if((foo=bar(arg1,arg2,arg3))==NULL){
    printf("Error 42");
    f(42);
}

これに:

#define f(x) ((x)+(x))

if ( ( foo = bar ( arg1, arg2, arg3 ) ) == NULL ) {
    printf ( "Error 42" );
    f ( 42 );
}

この-prsオプションは、括弧の周りにスペースを置き、演算子の周りとカンマの後にスペースを置きます。この-brオプションはブレース スタイルを強制し、-i 4インデントに 4 つのスペースを使用します。マクロ定義は変更されていませんが、コード内の関数のようなマクロへの呼び出しは (おそらく必要なもの) であることに注意してください。

于 2009-10-24T03:46:05.300 に答える
2

GNUIndentを確認することをお勧めします。私はそれがあなたが探しているすべてを行うことができると信じています。

于 2009-10-23T22:01:27.390 に答える
1

GnuInde​​ntはおそらくそれを行うことができます。残念ながら、インデントには非常に多くのオプションがあり、その多くはまったく直感的ではなく、それらの多くは非常に奇妙な方法で相互作用します。私は(一度も)それを、入ってくるよりも醜く出てこない方法でコードをフォーマットすることに成功したことはありません。場合によっては、より均一でした。他の人たちでは、それは本当に均一だったに違いないと思いますが、それが従ったルールはまだ十分に奇妙で、結果はしばしば奇妙に見えました。

しばらくインデントに苦労した後、1つの形式のみをサポートするはるかに単純なプログラムを作成し、形式を変更したい場合はコードを編集する方が簡単であると判断しました。

于 2009-10-23T22:07:41.967 に答える
0

vim をオプション cindent および formatoptions とともに使用して、満足のいく結果を得ました。ファイル全体をインデントできます

  gg=G
  gg  -- go to 1st line 
  =G  -- indent upto lastline

formatexpr (vim7) を書きたい場合や、s///g コマンドでカスタム関数を書き、それをキーにマップしたい場合があります。

以下は、#define 行を除いて、括弧の後にスペースを入れます

v/#define/ s/[()]/\1 /g

はい、正規表現を学習します:)

于 2011-09-08T22:08:57.257 に答える