6
私はC++の文脈でしか尋ねません。これら2つの宣言の違いは何ですか?
struct x1 { ... };
typedef struct { ... } x2;
int main()
{
x1 a;
x2 b;
}
私はC++の文脈でしか尋ねません。これら2つの宣言の違いは何ですか?
struct x1 { ... };
typedef struct { ... } x2;
int main()
{
x1 a;
x2 b;
}
最初は、名前がx1
のクラスを定義します。
2番目のクラスは名前のないクラスを定義し、タイプエイリアスをx2
という名前で定義します。
違いはC++では非常に微妙です。あなたは、同じ名前で関数を宣言しようとすることで違いを観察することができます。
void x1(); // OK
void x2(); // not OK, redefined as a different type of symbol
は、実際には、あなたが同じ名前空間内のクラスと同じ名前で関数を定義することは避けてくださいので、この違いはめったに来ますアップ。最初の方が一般的に好まれるのは簡単ですからです。
Cでは、differenceが識別子の使用にもう少し影響します。
C++では、違いはありません(ただしCでは) – deviantfan