4

先日、C ではポインター矢印を特定の方法で使用してはならないという通知を受けました。私がしたことは次のとおりです。

struct info {
    int x;
    char *data;
}

int main() {
    struct info *information;
    information -> x = 0; /*Notice the spacing here between information and -> x*/
    information -> data = "";
}

普段目にしているもの

struct info *information;
information->x = 0;

聞きたかったのですが、これは通常のコーディング標準ですか? よりもはるかにクリーン
だと感じます。->p->stuff

4

3 に答える 3

11

構文の観点からは問題ではなく、意味のない空白です。

(逸話的に)スペースのないスタイルの方がはるかに一般的だと思います。構造封じ込めの「タイトさ」を何らかの形で反映しているので、いいと思います。もちろん、私は他のほとんどすべての二項演算子スペースで書きます。

a->b = 1 + 2;

そして決して

a -> b = 1+2;

また

a->b = 1+2;

あくまでも個人の好みですので、最後まで。もちろん、多くの専門的な環境では、「プロジェクト/会社のスタイル ガイドでは、これがどのように行われるかが指示されています」に持ち上げられています。

.また、演算子を使用して構造体を直接操作する場合も、同じように使用します。いつも:

a.b = 1 + 2;

そして決して:

a . b = 1+2;

上で言ってみたように、演算子の両側にある 2 つのものは同じものの一部であるため、前者の書式設定がうまくいくと思います。" a.b" は 2 つではなく用語です。では+、2 つのオペランドが独立しているため、間隔がより理にかなっています。

于 2013-04-15T10:20:14.453 に答える
6

C は非常に自由な形式の言語であり、空白 (タブ、スペース、改行など) はパーサーによって無視されます。

information -> x = 0;

と同じです

information->x=0;

information
->
x
=
0
;
于 2013-04-15T10:20:03.133 に答える
1

これは好みの問題であるため、おそらくhttps://softwareengineering.stackexchange.com/の方が適しています。

一般的には、スペースを空けないことが基準だと思います。私の C コードでは、算術演算子をx + yetc として書き、メンバーアクセス演算子を etc として書きますa->y。これは、メンバーとその所有者を「1 つの単位」と見なすことができるためです。一方、算術は、複数の異なる値に対する操作であり、その唯一の値です。関係があるということは、表現の中でたまたま一緒に使われているということです。一方、メンバーは、基本的に所有者にバインドされており、スペースの不足はそれを意味します。

どちらを使っても大差ありません。それでも、より頻繁に使用されるものを知りたい場合は、スペースのないバージョンです。

于 2013-04-15T10:23:06.640 に答える