• ベストアンサー

構造体の使い方

構造体が定義されている場所では、 struct runqueue{ task_t としかないのに、実際の関数の部分では task_t *p = current というように、変数として宣言されている部分があるのですが、これにはどういった意味があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • chipizou
  • ベストアンサー率44% (8/18)
回答No.1

普通の変数宣言だと思います。 構造体の変数宣言なのに、structがどうしてないのかという質問でしたら、どこかで、構造体がtypedefされているからだと思います。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • ency
  • ベストアンサー率39% (93/238)
回答No.6

なんとなく、インクルードしているヘッダファイルに  typedef struct task task_t; のような宣言がありそうな気がします。 もちろん、構造体定義の本体もどこかにいるんでしょうけど。。。  struct task {   …(いろんな型の変数 (⇒メンバ) の定義)…  }; # 当然ですが、この例は task_t が struct task の typedef # であった場合です。。。念のため。。。 grep 等で、探してみてはいかがでしょうか。 あ、そうか…。 定義本体の方は、ライブラリの中とかに入っちゃっていたら見つからないのか。。。 …ま、そんなこともあるかもしれません。 少なくとも、  typedef struct task task_t; のような宣言はどこかにいるはずです。

すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.5

Cじゃ無くてC++なのでは?

すると、全ての回答が全文表示されます。
回答No.4

ANo.3さんの書いておられるとおり task_tは別の場所でtypedefされているのでしょう。 たぶん、 struct task_struct { いろいろ定義 }; typedef struct task_struct task_t; というのがどこかにあると思います。。

すると、全ての回答が全文表示されます。
  • ryuta_mo
  • ベストアンサー率30% (109/354)
回答No.3

べつのところでtask_t型が定義されてるんじゃないんですか?

すると、全ての回答が全文表示されます。
回答No.2

これだけではよく分かりませんので定義部分を全部書いてもらえませんか。 もし、typedef struct runqueue {構造体の内容定義} task_t; であれば、task_t型を定義しているので、pはtask_t型(struct runqueue)へのポインタの変数ですが。。。

iwaryou
質問者

補足

夜遅くの回答ありがとうございます。 typedef struct runqueue runqueue_t; struct prio_array { int nr_active; unsigned long bitmap[BITMAP_SIZE]; list_t queue[MAX_PRIO]; }; struct runqueue { spinlock_t lock; unsigned long nr_running, nr_switches, expired_timestamp; signed long nr_uninterruptible; task_t *curr, *idle; prio_array_t *active, *expired, arrays[2]; int prev_nr_running[NR_CPUS]; task_t *migration_thread; list_t migration_queue; } ____cacheline_aligned; と言う風に定義されているのですが、

すると、全ての回答が全文表示されます。

関連するQ&A