0
typedef const struct __CFString * a1;

上記の typedef 宣言では、a1 が定数構造体 __CFString へのポインターとして定義されていると述べています。

ここで、「__」とはどういう意味ですか?

次に、以下で説明する a2 として新しい定義を作成します。

typedef const struct CFString * a2;

では、a1 は a2 とどう違うのでしょうか?

4

1 に答える 1

1

まず、 のアンダースコア__CFStringは名前の一部であるためstruct __CFString、 とstruct CFStringは異なる型であり、struct XXCFStringstruct CFStringは異なる型です。

次に、2 つのアンダースコアで始まる名前は、実装用に予約されています。つまり、名前の衝突の危険を冒さずに 2 つのアンダースコアで始まる名前を使用することはできません。

詳細を含む別のSO回答は次のとおりです。C++識別子でアンダースコアを使用するためのルールは何ですか?

于 2013-11-17T07:42:23.617 に答える