メイン Routing Protocols Implementation & Model Development OLSRのハローメッセージに新たな情報を持たせる方法 | 投稿するにはまず登録を |
題名 | 投稿者 | 日時 |
---|---|---|
OLSRのハローメッセージに新たな情報を持たせる方法 | shiba | 2011/1/3 22:10 |
Re: OLSRのハローメッセージに新たな情報を持たせる方法 | hiro | 2011/1/4 12:30 |
Re: OLSRのハローメッセージに新たな情報を持たせる方法 | shiba | 2011/1/4 14:54 |
Re: OLSRのハローメッセージに新たな情報を持たせる方法 | hiro | 2011/1/6 17:53 |
Re: OLSRのハローメッセージに新たな情報を持たせる方法 | shiba | 2011/1/8 16:35 |
» Re: OLSRのハローメッセージに新たな情報を持たせる方法 | hiro | 2011/1/9 11:05 |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
hiro | 投稿日時: 2011/1/9 11:05 |
長老 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: OLSRのハローメッセージに新たな情報を持たせる方法 動きましたか、それは良かったです。
これって、 構造体(struct)や共用体(union)の最後のメンバは不完全配列型でも よいことになっていて。正式には『フレキシブル配列メンバ』と呼ぶのですが、 まあ、難しいC言語のことは興味あれば調べて見て下さい。 で、今回の構造体の最後にある配列hell_info[1]は1固定ではなく、 プログラム実行中に配列の要素数を変更することができるのです。 というか、わざわざ[1]と定義するのは変更したいからです。 この場合、 HELLOパケットで送信する内容はその時のNodeが持っている情報に 応じて変化するため、実行時でないと配列の要素数が決まらないのです。 しかも、hellmsg全体を連続したメモリで処理した方が便利です。 連続領域で使いたいから、 hellinfo *hell_info; hell_info = (hellinfo *)malloc ((sizeof hellinfo) * n); という使い方ではなくって、 hellinfo hell_info[1]; にしているわけです。 具体的には、 定義時にはhell_info[1]ですが、実行時にはhell_info[2]だったり hell_info[3]するわけです。 したがって、hell_info[1]の次にSpeedを定義すると、hell_info[2]に なる時にSpeed部分が上書きされ、設定した値がなくなったわけです。 なお、今回のOLSRの場合は配列要素数という使い方はしておらず、
と処理していますが、説明を簡単にするために配列要素数で 説明しました。 |
フラット表示 | 前のトピック | 次のトピック |