2017-02-05 19 views
-3

を使用して同じタイプの構造体内に構造体ポインタを作成するここではC++のバックグラウンドを使用しています。私は自分のコースのうちの1つにCを書く必要があります。これら2つの宣言の違いは何ですか?なぜstructキーワードを含めるのですか?異なる意味がありますか?彼らはC++とCでは異なる意味を持っていますか?違いは何ですか?キーワードstruct

struct A { 
    int dataA; 
    A* nextA; 
}; 

struct B { 
    int dataB; 
    struct B* nextB; 
}; 

以下のコメントでは、最初のCは無効であるとしていますが、gccで正しくコンパイルしています。

enter image description here

編集:私はgccで.cppファイルをコンパイルしました。私はそんなにうなずきます。

解決策:2番目はCで必要です。最初のCは、C++でのみ有効です。

+2

最初の形式はC –

+0

で無効です。gmmでコンパイルできます。 –

+0

Hmmm ... nops http://ideone.com/A24jsZ :) –

答えて

2
struct B { 
    int dataB; 
    B* nextB; 
}; 

Cで
struct B { 
    int dataB; 
    struct B* nextB; 
}; 

と同じです++ではなくCを使用する場合はCで、あなたは二番目の形式を使用する必要があります。最初の形式は合法ではありません。

関連する問題