1

私のプロジェクトでUncrustifyを使用しようとしていますが、Objective-Cメッセージの受信者としてマクロを使用すると間隔が変更されるという問題が発生しています。たとえば、次のマクロとメソッドの呼び出しを考えると、間隔はそのままであると思います。

#define NilOrNotNSNull(val) ({id __val = (val); (__val == [NSNull null]) ? nil : __val;})

title_ = [NilOrNotNSNull([dict objectForKey:@"post_title"]) copy];

しかし、これは結果です。

#define NilOrNotNSNull(val) ({id __val = (val); (__val == [NSNull null]) ? nil : __val;})

title_ = [NilOrNotNSNull ([dict objectForKey:@"post_title"])copy];

Uncrustifyは、括弧内のテキストがマクロの引数であることを認識していないように見えますが、それが一体何であるかはよくわかりません。これは私にはUncrustifyのバグのように見えますが、構成に問題がある可能性があるため、GitHubに問題を提出するだけでなく、ここで質問することにしました。これが私が使用している設定です:https ://gist.github.com/812314

誰かがいくつかの洞察を提供することができれば、私はそれをいただければ幸いです。

4

1 に答える 1

1

構成を使用して実行すると、正確な出力が得られません。どのバージョンを使用していますか?私のバージョン出力は次のとおりです。

macbook-adamd:~ adamd$ uncrustify --version
uncrustify 0.56

構成を使用して取得した出力には、マクロの親を改行にラップするバックスラッシュがあります。

#define NilOrNotNSNull(val) ({ id __val = (val); (__val == [NSNull null]) ? nil : __val; } \
                         )

title_ = [NilOrNotNSNull ([dict objectForKey:@"post_title"])copy];

とは言うものの、設定ファイルの先頭にNilOrNotNSNull追加することで、と開いている親の間のスペースをなくすことができました。set func_call_user NilOrNotNSNull詳細については、ドキュメントを参照してsp_func_call_user_parenください。スペースを削除するオプションが設定されているようですが、一致する定義がありません。

これが私の出力set func_call_user NilOrNotNSNullです:

#define NilOrNotNSNull(val) ({ id __val = (val); (__val == [NSNull null]) ? nil : __val; } \
                             )

title_ = [NilOrNotNSNull([dict objectForKey:@"post_title"]) copy];

私はあなたの要点をフォークして更新しました:https ://gist.github.com/815042

于 2011-02-07T19:59:32.317 に答える