C言語はまた、名前空間は、4ビットのクラスの名前空間に分けることができました。
クラス4の名前空間:
すべてのラベル(ラベル)が同じ名前空間に属します。説明:①同じ機能で、あなたは同じラベルを持つことができます。②同じ機能であり、他の変数は、同じ名前にラベルを付けることができます。彼らは異なる名前空間に属しているため。
struct
、enum
そしてunion
名前、C99でタグと呼ばれ、すべてのタグが同じ名前空間に属します。あなたが宣言しなかった場合つまり、struct A { int a };
もはや宣言するunion A{ int a };
。
常に前のタグと同様のタグ形式の名前空間のすべて、理由struct
、enum
またはunion
キーワードなので、コンパイラは他の識別子領域からそれらを区別することができます。struct
そして、union
メンバーが名前空間に属し、互いに独立しています。たとえば:あなたはすでに宣言している場合はstruct A { int a };
、そのメンバーの名前がされa
、あなたはまだ宣言することができますstruct B{ int a };
かunion B{ int a };
。理由struct
とunion
、それぞれのメンバーが名前空間になるが、そのメンバーなぜならアクセス、または必要にある「」。「 - >」演算子はなく、一人で、そう、彼らは他の識別子とすることができ、コンパイラ別の領域。列挙型ので、enum
メンバーは単独で使用することができ、それがこの名前空間の列挙型のメンバーではありません。他のすべての識別子は、同じ名前空間に属します。変数名、関数名、関数のパラメータ、マクロなど、
typedef
型名、enum
その上のメンバー、および。注:これは、同じ名前の識別子が表示されている場合は、前処理段階ではなく、コンパイルの段階で扱っているため、マクロ定義は、他のすべての識別子をカバーします。マクロ定義識別子に加えて、処理ルールの他のタイプは:内部スコープは、スコープ識別子を囲む非表示にします。
通常、Cプログラムでは、このC言語が名前空間思ったことはありません書き込み、それが何を使用ですか?このため、「C言語インタフェースと実装」神は、広範な使用typedef struct T *T;
この形式の(これT
でstruct T *
)使用量は、特定続きます大会、C言語の規則を使用して、この簡単なコマンドでは、コードより洗練され、より良い可読性を行い、いくつかの利点を得ることができます。
その他の技術的なシェア:Virboxの技術のブログ