2016-05-10 31 views
-2

私のコード(C言語)でエラーを探していますが、何も見つかりません。 私は多くのブログを見て、アドバイスされたものは何も手助けしなかった多くのことを試しました。
私はコード化されてきたこと:不動産、お客様とオファーがうまく.hファイルで定義され、含まれていながら不完全な型への参照を逆参照する - typedef構造体

typedef struct Account_t *Account; 
struct Account_t { 
    Customer customer; 
    Realtor realtor; 
    Offer offer; 
}; 

。私は私が書くときというエラー「不完全な型へのポインタを参照解除する 『をAccount_t STRUCT』」を取得しています:

Account account = malloc(sizeof(*account)); 

は私が問題を見つけてください!

+1

有効であるはずです([here](http://ideone.com/v19S9v)を参照)。完全な例を投稿してください。何らかの理由で、コンパイラは 'malloc'を使用しているときに構造体定義を見ていません。 – molbdnilo

+1

'Customer'、' Realtor'と 'Offer'の定義を表示します。 – BLUEPIXY

+0

_... Realtor、Customer、Offerは明確に定義されていますが...あなたの投稿にそれらを含めることはできますか? – ryyker

答えて

-3

、あなたはこのような何かする必要があります:

アカウントアカウント=(アカウント)はmalloc(はsizeof(*アカウントを));

+3

'sizeof(account)'はポインタのサイズ(8または4バイト)を返します。 'sizeof(* account)'は 'sizeof(Account_t)'を返します –

+0

実際これはまさに意図です。質問を投稿したユーザーは、明示的にそれを公式化していませんでした。 – armagedescu

-2
typedef struct Account_t *Account; 
struct Account_t { 
    Customer customer; 
    Realtor realtor; 
    Offer offer; 
}; 

最初の行はstruct Account_tへのポインタであることAccountを定義しました。ただし、その時点でstruct Account_tは未定義です。

最初にstructを定義してからtypedefを定義する必要があります。

struct Account_t { 
    Customer customer; 
    Realtor realtor; 
    Offer offer; 
}; 
typedef struct Account_t *Account; 

これで、Accountをうれしく使うことができます。私が言うと思います

+5

あなたはそうする必要はありません。順序は関係ありません。 – 2501

0

あなたのコードを試しました。そして私はあなたと同様の問題を抱えていました。

問題はコードにあります。ヒープに構造体を割り当てると、mallocがポインタを返すため、戻り値が間違って割り当てられます。

Account* account = (account*)malloc(sizeof(account)); 

そして二つ目: 型定義として、私はポインタとしての構造を定義しない

私のコードは次のようになります。

typedef struct account_t Account; 

この情報をお役立てください。

関連する問題